English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Exception handling allows you to handle abnormal situations in a controlled manner, such as errors defined by the program.
When an abnormal situation occurs, an exception will be triggered. The word 'throw' means that the current program stops executing and the control is redirected to the nearest applicable catch clause. If there is no applicable catch clause, the execution of the program ends.
El manejo de excepciones JDBC es muy similar al manejo de excepciones Java, pero para JDBC, las excepciones más comunes que debe manejar son java.sql.SQLException.
SQLException puede ocurrir tanto en el driver como en la base de datos. Cuando ocurre este tipo de excepción, se pasa un objeto de tipo SQLException a la cláusula catch.
El objeto SQLException pasado tiene los métodos que se pueden usar para obtener más información sobre la excepción.-
Método | Descripción |
---|---|
getErrorCode( ) | Obtenga el número de error asociado con la excepción. |
getMessage( ) | Obtenga el mensaje de error del driver JDBC procesado por el driver, o el número de error y el mensaje de error de Oracle para errores de base de datos. |
getSQLState( ) | Obtenga la cadena de estado XOPEN SQL. Para errores del driver JDBC, este método no devuelve información útil. Para errores de base de datos, se devolverá el código xopensqlstate de cinco dígitos. Este método puede devolver null. |
getNextException( ) | Obtenga el siguiente objeto Exception en la cadena de excepciones. |
printStackTrace( ) | Imprima la excepción actual o la excepción invocable y su pila de llamadas en el flujo de error estándar. |
printStackTrace(PrintStream s) | Imprima este objeto descartable y su pila de llamadas en el flujo de salida de impresión especificado. |
printStackTrace(PrintWriter w) | Imprima este archivo una vez y devuélvalo al PrintWriter especificado. |
Al utilizar la información proporcionada por el objeto Exception, puede capturar excepciones y continuar adecuadamente la ejecución del programa. Esta es la forma general del bloque try-
try { // ¡El código de excepción suyo se encuentra entre estos corchetes!!! } catch(Exception ex) { // El código de manejo de excepciones suyo se encuentra entre estos dos // Los corchetes, similares a la cláusula exception // En PL / Bloque SQL. } finally { // El código que debe ejecutar siempre se encuentra entre estos dos //Los corchetes. Al igual que cerrar la conexión de la base de datos. }
Estudie el siguiente código de ejemplo para entendertry....catch...finallyUso del bloque.
//Paso1.Importar los paquetes necesarios import java.sql.*; public class JDBCExample { // Nombre del driver JDBC y URL de la base de datos static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/EMP"; // credenciales de base de datos static final String USER = "usuario"; static final String PASS = "contraseña"; public static void main(String[] args) { Connection conn = null; try{ //Paso2:registrar controlador JDBC Class.forName("com.mysql.jdbc.Driver"); //Paso3:establecer conexión System.out.println("Conectando a la base de datos..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); //Paso4:ejecutar consulta System.out.println("Creando estado..."); Statement stmt = conn.createStatement(); String sql; sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); //Paso5:extraer datos del conjunto de resultados while(rs.next()){ //búsqueda por nombre de columna int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); //mostrar valor System.out.print("ID: " + id); System.out.print(", Edad: " + age); System.out.print(", Primer: " + first); System.out.println(", Último: " + last); } //Paso6:limpiar entorno rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ //处理JDBC错误 se.printStackTrace(); }catch(Exception e){ //处理Class.forName的错误 e.printStackTrace(); }finally{ //最终阻止用于关闭资源 try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } }//结束try System.out.println("Goodbye!"); }//结束main }//结束JDBCExample
现在,让我们编译上面的示例,如下所示:
C:\>javac JDBCExample.java C:\>
运行时JDBCExample,如果没有问题,它将产生以下结果,否则将捕获相应的错误并显示错误消息-
C:\>java JDBCExample Connecting to database... Creating statement... ID: 10, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mahnaz, Last: Fatma ID: 102, Age: 3, First: Zaid, Last: Khan ID: 103, Age: 28, First: Sumit, Last: Mittal C:\>
尝试传递错误的数据库名称或错误的用户名或密码,然后检查结果。