无论如何我可以
在使用 Microsoft JDBC 驱动程序时从 SQLException 中获取:行、级别、状态?
以下是来自 isql 或类似工具的错误消息
消息 156,第 15 级,状态 1,第 1 行 关键字“FROM”附近的语法不正确。
Java SQLException 只有:ex.getErrorCode()、ex.getMessage()、ex.getSQLState() 和 toString() 但是以上方法都没有显示“Line”、“Level”、“State”
我想要类似的东西到 Sybase jConnect,您可以在其中执行以下操作:
if (sqlex instanceof EedInfo) // 来自 jConnect 的消息 { EedInfo eedi = (EedInfo) sqlex; int msgNum = sqlex.getErrorCode(); int 严重性 = eedi.getSeverity(); int state = eedi.getState(); int lineNumber = eedi.getLineNumber(); String procName = eedi.getProcedureName(); 字符串 srvName = eedi.getServerName(); }
或者只是获取一个带有“Line, Level, State”的字符串,然后我可以解析该字符串以获取错误来源的行号。
顺便说一句:您可以在 MSSQL JDBC 驱动程序中将 SQLException 降级为 SQLWarning
在 Sybase jConnect 中您将如何做到这一点
if (conn instanceof SybConnection) { ((SybConnection)conn).setSybMessageHandler(新 SybMessageHandler() { @覆盖 公共 SQLException 消息处理程序(SQLException sqlex) { // 如果在这里你可以过滤掉特定的错误信息... if (sqlex.getErrorCode() == 9999) 返回空值; // 或将消息降级为 SQLWarnings,因此不会中断执行。 返回 AseConnectionUtils.sqlExceptionToWarning(sqlex); } }); }