English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JDBC-Ausnahmebehandlung (SQLException)

Die Ausnahmebehandlung ermöglicht es Ihnen, Ausnahmen kontrolliert zu behandeln, z.B. Fehler, die durch das Programm definiert werden.

Wenn eine Ausnahme vorliegt, wird eine Ausnahme ausgelöst. Der Begriff 'auslösen' bedeutet, dass das aktuelle Programm die Ausführung beendet und der Kontroller auf den nächstgelegenen anwendbaren 'catch'-Abschnitt umgeleitet wird. Wenn es keinen anwendbaren 'catch'-Abschnitt gibt, endet die Ausführung des Programms.

JDBC-Ausnahmebehandlung ist sehr ähnlich zu Java-Ausnahmebehandlung, aber für JDBC müssen Sie die häufigsten Ausnahmen behandeln, die Sie haben zu behandeln java.sql.SQLException.

SQLException Methoden

SQLException kann sowohl im Treiber als auch in der Datenbank auftreten. Wenn dies der Fall ist, wird ein SQLException-Objekt an den catch-Abschnitt übergeben.

Der übergebene SQLException-Objekt hat Methoden, die zur Erteilung von weiteren Informationen über die Ausnahme verwendet werden können-

MethodeBeschreibung
getErrorCode( )

Erhalten Sie die Fehlernummer, die mit der Ausnahme verbunden ist.

getMessage( )

Erhalten Sie die JDBC-Treiberfehlermeldung, die vom Treiber verarbeitet wird, oder die Oracle-Fehlernummer und -meldung für Datenbankfehler.

getSQLState( )

Erhalten Sie den XOPEN SQLstate String. Für JDBC-Treiberfehler wird dieses Verfahren keine nützlichen Informationen zurückgeben. Für Datenbankfehler wird eine fünfstellige xopensqlstate-Code zurückgegeben. Dieses Verfahren kann null zurückgeben.

getNextException( )

Erhalten Sie das nächste Exception-Objekt im Exception-Chain.

printStackTrace( )

Drucken Sie die aktuelle Ausnahme oder die aufrufbare Ausnahme und kehren Sie ihre Rückverfolgung zum Standardfehlerstrom zurück.

printStackTrace(PrintStream s)

Diesen verwerfbaren Objekt und seine Rückverfolgung auf den angegebenen Druckstrom drucken.

printStackTrace(PrintWriter w)

Drucken Sie diese Einmaldatei aus und kehren Sie sie zum angegebenen Druckschreiber zurück.

Durch die Nutzung der Informationen, die der Exception-Objekt bietet, können Sie Ausnahmen fangen und den Programmablauf angemessen fortsetzen. Dies ist das allgemeine Format des try-Blocks-

try {
   // Ihr Exception-Code介于这些大括号之间!!!
}
catch(Exception ex) {
   // Ihr Exception-Verarbeitungscode介于这两者之间 
   // Klammern, ähnlich wie der exception-Abschnitt 
   // in PL / im SQL-Block.
}
finally {
   // Sie müssen immer zwischen diesen beiden ausführbaren Code 
   //Klammern. Genau wie das Schließen der Datenbankverbindung.
}

Online-Beispiel

Studieren Sie den folgenden Beispielcode, um zu verstehentry....catch...finallyVerwendung des Blocks.

//步骤1.Einführung der erforderlichen Softwarepakete
import java.sql.*;
public class JDBCExample {
   // JDBC Treibername und Datenbank-URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //  数据库凭证
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {
   Connection conn = null;
   try{
      //步骤2:注册JDBC驱动程序
      Class.forName("com.mysql.jdbc.Driver");
      //步骤3:建立连接
      System.out.println("Verbinde mit Datenbank...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //步骤4:执行查询
      System.out.println("Erstelle Anweisung...");
      Statement stmt = conn.createStatement();
      String sql;
      sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      //步骤5:从结果集中提取数据
      while(rs.next()){
         //按列名检索
         int id  = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
         //显示值
         System.out.print("ID: " + id);
         System.out.print(", Alter: " + age);
         System.out.print(", Erster: " + first);
         System.out.println(", Letzter: " + last);
      }
      //步骤6:环境清理
      rs.close();
      stmt.close();
      conn.close();
   catch(SQLException se){
      //Verarbeitung von JDBC-Fehlern
      se.printStackTrace();
   catch(Exception e){
      //Verarbeitung des Fehlers von Class.forName
      e.printStackTrace();
   }finally{
      //Letztlich zur Verhinderung von Ressourcenverlust
      try{
         if(conn!=null)
            conn.close();
      catch(SQLException se){
         se.printStackTrace();
      }
   }//Beenden Sie try
   System.out.println("Goodbye!");
}//Beenden Sie main
}//Beenden Sie JDBCExample

Lassen Sie uns nun den obigen Beispiel wie folgt kompilieren:

C:\>javac JDBCExample.java
C:\>

LaufzeitJDBCExample,wenn alles in Ordnung ist, wird das folgende Ergebnis erzeugt,否则 wird der entsprechende Fehler erfasst und eine Fehlermeldung angezeigt-

C:\>java JDBCExample
Verbindung zu der Datenbank...
Erstellen der Anweisung...
ID: 100, Alter: 18, First: Zara, Last: Ali
ID: 101, Alter: 25, First: Mahnaz, Last: Fatma
ID: 102, Alter: 30, First: Zaid, Last: Khan
ID: 103, Alter: 28, First: Sumit, Last: Mittal
C:\>

Versuchen Sie, den obigen Beispiel mit einem falschen Datenbanknamen oder falschen Benutzernamen oder Passwort zu starten, und überprüfen Sie dann das Ergebnis.