更新时间:2026-07-28 GMT+08:00
分享

处理SQL异常

当JDBC操作(如执行SQL语句、处理结果集等)发生错误时,JDBC程序会抛出SQL异常。SQLException有getMessage()和printStackTrace()等常用方法,详细介绍请参见java.sql.SQLException

以下代码展示了如何捕捉SQL异常。

try { 
   <some code>
   } 
 } catch(SQLException e) { 
     // System.out.println("exception: " + e.getMessage());      // 返回错误的描述信息 
     e.printStackTrace ();      // 将当前异常的堆栈信息打印到标准错误流 
}

以使用错误的列索引为例,展示捕捉到SQL异常后的报错信息。若在处理结果集的示例步骤中,将rs.getString(2)写为rs.getString(3)。

  • getMessage()方法使用示例
    try { 
       while (rs.next()) { 
          int c_customer_sk = rs.getInt(1);       
          String c_customer_name = rs.getString(3);      // 使用错误的列索引
          System.out.println("c_customer_sk: " + c_customer_sk + ", c_customer_name: " + c_customer_name);
       } 
     } catch(SQLException e) { 
         System.out.println("exception: " + e.getMessage());      // 返回错误的描述信息 
    }

    运行程序后会出现以下信息:

    exception: 栏位索引超过许可范围:3,栏位数:2。
  • printStackTrace()方法使用示例
    try { 
       while (rs.next()) { 
          int c_customer_sk = rs.getInt(1);       
          String c_customer_name = rs.getString(3);      // 使用错误的列索引
          System.out.println("c_customer_sk: " + c_customer_sk + ", c_customer_name: " + c_customer_name);
       } 
     } catch(SQLException e) { 
         e.printStackTrace ();      // 将当前异常的堆栈信息打印到标准错误流 
    }

    运行程序后会出现以下信息:

    com.huawei.gaussdb.jdbc.util.PSQLException: 栏位索引超过许可范围:3,栏位数:2。
    	at com.huawei.gaussdb.jdbc.jdbc.PgResultSet.checkColumnIndex(PgResultSet.java:4005)
    	at com.huawei.gaussdb.jdbc.jdbc.PgResultSet.checkResultSet(PgResultSet.java:4041)
    	at com.huawei.gaussdb.jdbc.jdbc.PgResultSet.getString(PgResultSet.java:2754)
    	at Customer.main(Customer.java:54)

相关文档