Java SQL Server JDBC getLine getSeverity

Java SQL Server JDBC getLine getSeverity,java,sql-server,jdbc,mssql-jdbc,Java,Sql Server,Jdbc,Mssql Jdbc,我是否可以得到:行、级别、状态 使用microsoft JDBC驱动程序时,是否从SQLException中删除 下面是来自isql或类似工具的错误消息 Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'FROM'. 味精156,第15级,状态1,第1行 关键字“FROM”附近的语法不正确。 Java SQLException只有:ex.getErrorCode()、ex.getMessage()、ex.g

我是否可以得到:行、级别、状态
使用microsoft JDBC驱动程序时,是否从SQLException中删除

下面是来自isql或类似工具的错误消息

Msg 156, Level 15, State 1, Line 1 Incorrect syntax near the keyword 'FROM'. 味精156,第15级,状态1,第1行 关键字“FROM”附近的语法不正确。 Java SQLException只有:ex.getErrorCode()、ex.getMessage()、ex.getSQLState()和toString() 但上述方法均未显示“行”、“级别”、“状态”

我想要类似于Sybase jConnect的产品,您可以在其中执行以下操作:

if (sqlex instanceof EedInfo) // Message from jConnect { EedInfo eedi = (EedInfo) sqlex; int msgNum = sqlex.getErrorCode(); int severity = eedi.getSeverity(); int state = eedi.getState(); int lineNumber = eedi.getLineNumber(); String procName = eedi.getProcedureName(); String srvName = eedi.getServerName(); } if(sqlex instanceof EedInfo)//来自jConnect的消息 { EedInfo-eedi=(EedInfo)sqlex; int msgNum=sqlex.getErrorCode(); int severity=eedi.getSeverity(); int state=eedi.getState(); int lineNumber=eedi.getLineNumber(); 字符串procName=eedi.getProcedureName(); 字符串srvName=eedi.getServerName(); } 或者只获取一个带有“Line,Level,State”的字符串,然后我可以解析该字符串并获取错误源的行号。

顺便问一下:在MSSQL JDBC驱动程序中,您可以将SQLException降级为SQLWarning吗
这是在Sybase jConnect中执行此操作的方式

if (conn instanceof SybConnection) { ((SybConnection)conn).setSybMessageHandler(new SybMessageHandler() { @Override public SQLException messageHandler(SQLException sqlex) { // if here you can filter out specific error messages... if (sqlex.getErrorCode() == 9999) return null; // or Downgrade messages to SQLWarnings, so executions wont be interrupted. return AseConnectionUtils.sqlExceptionToWarning(sqlex); } }); } if(SybConnection的连接实例) { ((SybConnection)conn.setSybMessageHandler(新SybMessageHandler()) { @凌驾 公共SQLException消息处理程序(SQLException sqlex) { //如果在这里您可以筛选出特定的错误消息。。。 if(sqlex.getErrorCode()==9999) 返回null; //或者将消息降级为SQLWarnings,这样执行就不会被中断。 返回AseConnectionUtils.sqlExceptionToWarning(sqlex); } }); }