如何使用 JDBC 应用程序处理异常?

jdbcjava 8programmingobject oriented programming

每当 JDBC 应用程序在执行 SQL 语句时遇到问题时,就会抛出 SQLException

此类提供与数据库交互时发生的错误的信息。

以下是 SQLException 类的主要方法:

Sr.No方法 &说明
1int getErrorCode()
此方法返回发生的异常的异常代码。
2SQLException setNextException(SQLException ex)
使用此方法,您可以通过向当前异常添加新异常来创建异常链。
3String getSQLState()
此方法返回当前异常的 SQLState。
4Iterator<Throwable> iterator()
此方法返回一个迭代器,用于遍历 SQLException 链。
5void getNextException(SQLException ex)
此方法用于检索此异常链中的下一个 SQLException。

示例:

以下示例演示了如何处理 SQL 异常。我们创建一个已存在的表,并打印发生异常的代码、状态和消息。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class HandlingExceptions {
   public static void main(String args[]) {
      try {
          //注册驱动程序
         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
          //获取连接
         String oracleUrl = "jdbc:oracle:thin:@localhost:1521/xe";
         Connection con = DriverManager.getConnection(oracleUrl, "system", "password";);
         System.out.println("已连接到 Oracle 数据库....");
          //创建语句
         Statement stmt = con.createStatement();
          //执行语句
         String createTable = "CREATE TABLE Students( " + "Name VARCHAR(255), " + "Age INT NOT NULL, " + "Percentage INT)";
         stmt.execute(createTable);
         PreparedStatement pstmt = con.prepareStatement("INSERT INTO Student VALUES(?, ?, ?)");
         pstmt.setString(1, "Raju");
         pstmt.setInt(2, 19);
         pstmt.setInt(3, 85);
         pstmt.execute();
         pstmt.setString(1, "Raja");
         pstmt.setInt(2, 17);
         pstmt.setInt(3, 67);
         pstmt.execute();
         ResultSet rs = stmt.executeQuery("Select *from Student");
         while(rs.next()) {
            System.out.print("Name: "+rs.getString("Name")+", ");
            System.out.print("Age: "+rs.getInt("Age")+", ");
            System.out.print("Percentage: "+rs.getString("Percentage"));
            System.out.println();
         }
      } catch(SQLException e) {
         //获取 SQL 错误代码
         System.out.println("异常代码:"+e.getErrorCode());
         //获取 SQL 状态
         System.out.println("异常状态:"+e.getSQLState());
         //获取消息
           System.out.println("消息: "+e.getMessage());
      }
   }
}

输出:

已连接到 Oracle 数据库....
异常代码:955
异常状态:42000
消息:ORA-00955:名称已被现有对象使用

相关文章