機械翻訳について

エラーおよび警告の取得

この項では、JDBCおよびODBCでネイティブ・エラー・コードとメッセージを取得する方法について説明します。

JDBCでのネイティブ・エラー・コードおよびメッセージの取得

この例に示すとおり、JDBCでは、ネイティブ・エラー・コードおよびメッセージを取得できます。

private static void printSQLExceptions(SQLException e)
{
     while (e != null) {

        System.out.println("SQLState: " + 
        e.getSQLState());
        System.out.println("Message : " + 
        e.getMessage());
        System.out.println("Vendor  : " + 
        e.getErrorCode());
        e.printStackTrace();
        e = e.getNextException();
        System.out.println("");
     }
      e.printStackTrace();
}
        .   .   .

try {
      // JDBC method calls here
} 
catch (SQLException ex) {

     ex.printSQLExceptions();
}

単一のJDBC操作で複数のエラーが発生する可能性があります。 これらのエラーは、JDBCメソッドSQLExceptionへの複数のコールを使用して取得できます。

ODBCでのネイティブ・エラー・コードおよびメッセージの取得

ODBCでは、次の例に示すように、SQLError関数を使用してネイティブ・エラー・コードおよびメッセージを取得できます:

#define MSG_LNG 512

SQLCHAR szSqlState[MSG_LNG];                     /* SQL state string */
SQLINTEGER pfNativeError;                        /* Native error code */
SQLCHAR szErrorMsg[MSG_LNG];
                                     /* Error msg text buffer pointer */
SQLSMALLINT pcbErrorMsg;
                                    /* Error msg text Available bytes */
SQLRETURN ret = SQL_SUCCESS;

while ( ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO ) {
  ret = SQLError(henv, hdbc, hstmt, szSqlState, &pfNativeError,
                 szErrorMsg, MSG_LNG, &pcbErrorMsg);
  switch (ret) {
  case SQL_SUCCESS:
    fprintf(stderr, "*** %s\n*** ODBC Err = %s, ",
                   "TimesTen Err = %ld\n",
            szErrorMsg, szSqlState, pfNativeError);
    break;
  case SQL_SUCCESS_WITH_INFO:
    fprintf(stderr, "*** Call to SQLError failed with return ",
                    "code of SQL_SUCCESS_WITH_INFO.\n ",
                    "*** Need to increase size of ",
                    "message buffer.\n");
    break;
  case SQL_INVALID_HANDLE:
    fprintf(stderr, "*** Call to SQLError failed with ",
                   "return code of SQL_INVALID_HANDLE.\n");
    break;
  case SQL_ERROR:
    fprintf(stderr, "*** Call to SQLError failed with ",
                    "return code of SQL_ERROR.\n");
   break;
  case SQL_NO_DATA_FOUND:
    break;
  }
}

1つのODBC操作で複数のエラーが発生する可能性があります。 これらのエラーは、ODBC関数SQLErrorへの複数のコールを使用して取得できます。