📄 sqldiagnostic.java
字号:
// still important. sybStates.put(new Integer(102), "37000"); sybStates.put(new Integer(109), "21S01"); sybStates.put(new Integer(110), "21S01"); sybStates.put(new Integer(113), "42000"); sybStates.put(new Integer(168), "22003"); sybStates.put(new Integer(201), "37000"); sybStates.put(new Integer(207), "42S22"); sybStates.put(new Integer(208), "42S02"); sybStates.put(new Integer(213), "21S01"); sybStates.put(new Integer(220), "22003"); sybStates.put(new Integer(227), "22003"); sybStates.put(new Integer(229), "42000"); sybStates.put(new Integer(230), "42000"); sybStates.put(new Integer(232), "22003"); sybStates.put(new Integer(233), "23000"); sybStates.put(new Integer(245), "22018"); sybStates.put(new Integer(247), "22003"); sybStates.put(new Integer(257), "37000"); sybStates.put(new Integer(262), "42000"); sybStates.put(new Integer(277), "25000"); sybStates.put(new Integer(307), "42S12"); sybStates.put(new Integer(512), "21000"); sybStates.put(new Integer(517), "22008"); sybStates.put(new Integer(535), "22008"); sybStates.put(new Integer(542), "22008"); sybStates.put(new Integer(544), "23000"); sybStates.put(new Integer(545), "23000"); sybStates.put(new Integer(546), "23000"); sybStates.put(new Integer(547), "23000"); sybStates.put(new Integer(548), "23000"); sybStates.put(new Integer(549), "23000"); sybStates.put(new Integer(550), "23000"); sybStates.put(new Integer(558), "24000"); sybStates.put(new Integer(559), "24000"); sybStates.put(new Integer(562), "24000"); sybStates.put(new Integer(565), "24000"); sybStates.put(new Integer(583), "24000"); sybStates.put(new Integer(611), "25000"); sybStates.put(new Integer(627), "25000"); sybStates.put(new Integer(628), "25000"); sybStates.put(new Integer(641), "25000"); sybStates.put(new Integer(642), "25000"); sybStates.put(new Integer(911), "08004"); sybStates.put(new Integer(1276), "25000"); sybStates.put(new Integer(1505), "23000"); sybStates.put(new Integer(1508), "23000"); sybStates.put(new Integer(1715), "21S02"); sybStates.put(new Integer(1720), "42S22"); sybStates.put(new Integer(1913), "42S11"); sybStates.put(new Integer(1921), "42S21"); sybStates.put(new Integer(2526), "37000"); sybStates.put(new Integer(2714), "42S01"); sybStates.put(new Integer(2812), "37000"); sybStates.put(new Integer(3606), "22003"); sybStates.put(new Integer(3607), "22012"); sybStates.put(new Integer(3621), "01000"); sybStates.put(new Integer(3701), "42S02"); sybStates.put(new Integer(3902), "25000"); sybStates.put(new Integer(3903), "25000"); sybStates.put(new Integer(4602), "42000"); sybStates.put(new Integer(4603), "42000"); sybStates.put(new Integer(4608), "42000"); sybStates.put(new Integer(4934), "42S22"); sybStates.put(new Integer(6104), "37000"); sybStates.put(new Integer(6235), "24000"); sybStates.put(new Integer(6259), "24000"); sybStates.put(new Integer(6260), "24000"); sybStates.put(new Integer(7010), "42S12"); sybStates.put(new Integer(7327), "37000"); sybStates.put(new Integer(9501), "01003"); sybStates.put(new Integer(9502), "22001"); sybStates.put(new Integer(10306), "42000"); sybStates.put(new Integer(10323), "42000"); sybStates.put(new Integer(10330), "42000"); sybStates.put(new Integer(10331), "42000"); sybStates.put(new Integer(10332), "42000"); sybStates.put(new Integer(11021), "37000"); sybStates.put(new Integer(11110), "42000"); sybStates.put(new Integer(11113), "42000"); sybStates.put(new Integer(11118), "42000"); sybStates.put(new Integer(11121), "42000"); sybStates.put(new Integer(17222), "42000"); sybStates.put(new Integer(17223), "42000"); sybStates.put(new Integer(18091), "42S12"); sybStates.put(new Integer(18117), "42S22"); sybStates.put(new Integer(18350), "42000"); sybStates.put(new Integer(18351), "42000"); } /** * SQL Server type. Either <code>Driver.SQLSERVER</code> or * <code>Driver.SYBASE</code>. */ private final int serverType; SQLException exceptions; SQLWarning warnings; void addWarning(SQLWarning w) { if (warnings == null) { warnings = w; } else { warnings.setNextWarning(w); } } void addException(SQLException e) { if (exceptions == null) { exceptions = e; } else { exceptions.setNextException(e); } } /** * Create a dianostic SQLException or SQLWarning. * * @param number SQL Server error number. * @param state SQL Server state code. * @param serverity SQL Server serverity > 10 = error. * @param message SQL Server error message text. * @param server SQL Server name. * @param procName SQL Server stored procedure name. * @param line SQL Server error line number in SQL source. */ void addDiagnostic(int number, int state, int serverity, String message, String server, String procName, int line) { if (serverity > 10) { SQLException e = new SQLException(message, getStateCode(number, serverType, "S1000"), number); // // See if the driver should return a DataTrunction exception // if ((serverType == Driver.SQLSERVER && (number == 8152 || number == 8115 || number == 220)) || (serverType == Driver.SYBASE && (number == 247 || number == 9502))) { SQLException tmp = e; e = new DataTruncation(-1, false, false, -1, -1); // Chain the original exception as this has useful info. e.setNextException(tmp); } addException(e); } else { if (number == 0) { // Output from a TransactSQL print statement. SQLWarning w = new SQLWarning(message, null, 0); addWarning(w); } else { SQLWarning w = new SQLWarning(message, getStateCode(number, serverType, "01000"), number); addWarning(w); } } } /** * Clear the warning chain. */ void clearWarnings() { warnings = null; } /** * Check the exception chain for errors and throw any found * as an SQLException. * * @throws SQLException */ void checkErrors() throws SQLException { if (exceptions != null) { SQLException tmp = exceptions; exceptions = null; throw tmp; } } /** * Return the warning chain. * * @return The warning chain head as a <code>SQLWarning</code>. */ SQLWarning getWarnings() { return warnings; } /** * Create an SQL message for a specific server type. * * @param serverType either <code>Driver.SQLSERVER</code> or <code>Driver.SYBASE</code> */ SQLDiagnostic(final int serverType) { this.serverType = serverType; } /** * Map an SQL Server error code to an ANSI SQLSTATE code. * * @param number the SQL Server error number * @param serverType <code>Driver.SQLSERVER</code> or <code>Driver.SYBASE</code> * @param defState the default state code to return if the mapping fails * @return the SQLSTATE code as a <code>String</code> */ private static String getStateCode(final int number, final int serverType, final String defState) { final HashMap stateTable = (serverType == Driver.SYBASE) ? sybStates : mssqlStates; final String state = (String) stateTable.get(new Integer(number)); if (state != null) { return state; } return defState; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -