代码之家  ›  专栏  ›  技术社区  ›  Juha Syrjälä

如何使DB2的JDBC SQLExceptions更具描述性?

  •  15
  • Juha Syrjälä  · 技术社区  · 16 年前

    目前,我遇到了这种例外情况。使用这些神秘的SQLCODE和SQLSTATE数值很麻烦。是否有方法使SQL异常包含代码描述。

    Caused by: com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -302, 
         SQLSTATE: 22001, SQLERRMC: null
          at com.ibm.db2.jcc.b.hh.c(hh.java:1662)
          at com.ibm.db2.jcc.b.hh.a(hh.java:1238)
          at com.ibm.db2.jcc.c.db.n(db.java:737) 
          ....
    

    3 回复  |  直到 11 年前
        1
  •  20
  •   andy    8 年前

    retrieveMessagesFromServerOnGetMessage true

    jdbc:db2://host:50128/MYDB:retrieveMessagesFromServerOnGetMessage=true;
    

    DB2 11.1 Documentation

        2
  •  11
  •   Aaron Digulla    16 年前
    1. 检查异常是否实现 com.ibm.db2.jcc.DB2Diagnosable

    2. 在一个 DB2Diagnosable ,你可以打电话 getSqlca() DB2Sqlca getSqlCode() getSqlState() getMessage()

    DB2Sqlca.getMessage() try-catch .

        3
  •  3
  •   skaffman    16 年前

    translators


    JdbcDaoSupport

    try {
       // ... some code that throws SQLException
    } catch (SQLException ex) {
       throw getExceptionTranslator().translate(null, null, ex);
    }
    

    这将翻译并包装 SQLException 是Spring自己的强类型异常层次结构。

    getExceptionTranslator() 方法 JdbcTemplate (如果你没有使用它,那么看看它的来源,看看它是如何工作的。)