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

Tratamento de exceções JDBC (SQLException)

O tratamento de exceções permite que você lidar com situações anormais de maneira controlada, por exemplo, erros definidos pelo programa.

Quando ocorre uma condição anormal, será gerada uma exceção. O termo 'lançar' significa que o programa atual pára de executar e o controle é redirecionado para o catch subcláusula mais próximo aplicável. Se não houver subcláusula catch aplicável, a execução do programa termina.

O tratamento de exceções JDBC é muito semelhante ao tratamento de exceções Java, mas para JDBC, as exceções mais comuns que você precisa lidar são java.sql.SQLException.

Métodos SQLException

SQLException pode ocorrer tanto no driver quanto no banco de dados. Quando isso acontece, um objeto do tipo SQLException é passado para a cláusula catch.

O objeto SQLException passado possui os métodos disponíveis para obter informações adicionais sobre a exceção.-

MétodoDescrição
getErrorCode( )

Obtenha o número de erro associado à exceção.

getMessage( )

Obtenha a mensagem de erro do driver JDBC, tratada pelo driver, ou o número de erro e mensagem do erro de banco de dados Oracle.

getSQLState( )

Obtenha a string XOPEN SQLstate. Para erros do driver JDBC, este método não retorna informações úteis. Para erros de banco de dados, será retornado o código xopensqlstate de cinco dígitos. Este método pode retornar null.

getNextException( )

Obtenha o próximo objeto Exception na cadeia de exceções.

printStackTrace( )

Imprima a exceção atual ou a exceção chamável e sua pilha de chamadas para o fluxo de erro padrão.

printStackTrace(PrintStream s)

Escreva este objeto descartável e sua pilha de chamadas para o fluxo de saída especificado.

printStackTrace(PrintWriter w)

Imprima este arquivo único e trace-o para o PrintWriter especificado.

Ao usar as informações fornecidas pelo objeto Exception, você pode capturar exceções e continuar a execução do programa de maneira apropriada. Esta é a forma geral do bloco try-

try {
   // O código de exceção suas está entre essas chaves!!!
}
catch(Exception ex) {
   // O código de tratamento de exceções suas está entre esses dois 
   // Chaves, semelhantes à cláusula exception 
   // Em PL / no bloco SQL.
}
finally {
   // O código que você deve sempre executar está entre esses dois 
   //Chaves. Como fechar a conexão com o banco de dados.
}

Exemplo online

Estude o seguinte código de exemplo para entendertry....catch...finallyUso do bloco.

//Passo1.Importar o pacote necessário
import java.sql.*;
public class JDBCExample {
   // Nome do driver JDBC e URL do banco de dados
     
   static final String DB_URL = \//localhost/EMP\";
   //  Credenciais do banco de dados
   static final String USER = \
   static final String PASS = \
   
   public static void main(String[] args) {
   Connection conn = null;
   try{
      //Passo2Registrar driver JDBC
      Class.forName("com.mysql.jdbc.Driver");
      //Passo3Conectar
      System.out.println("Conectando ao banco de dados...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //Passo4Executar consulta
      System.out.println("Criando statement...");
      Statement stmt = conn.createStatement();
      String sql;
      sql = \
      ResultSet rs = stmt.executeQuery(sql);
      //Passo5Extrair dados do conjunto de resultados
      while(rs.next()){
         //Procurar por nome de coluna
         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(", Idade: ", + age);
         System.out.print(", Primeiro: ", + first);
         System.out.println(", Último: ", + last);
      }
      //Passo6Limpar o ambiente
      rs.close();
      stmt.close();
      conn.close();
   catch(SQLException se){
      //Tratamento do erro JDBC
      se.printStackTrace();
   catch(Exception e){
      //Tratamento do erro Class.forName
      e.printStackTrace();
   finally{
      //Bloqueio final para evitar a fuga de recursos
      try{
         if(conn!=null)
            conn.close();
      catch(SQLException se){
         se.printStackTrace();
      }
   }//Fim do try
   System.out.println("Goodbye!");
}//Fim do main
}//Fim do JDBCExample

Agora, vamos compilar o exemplo acima, conforme mostrado a seguir:

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

ExecuçãoJDBCExampleSe não houver problemas, ele produzirá os seguintes resultados; caso contrário, ele capturará o erro correspondente e exibirá a mensagem de erro.-

C:\>java JDBCExample
Conectando ao banco de dados...
Criando sentença...
ID: 100, Idade: 18, Primeiro: Zara, Último: Ali
ID: 101, Idade: 25, Primeiro: Mahnaz, Último: Fatma
ID: 102, Idade: 30, Primeiro: Zaid, Último: Khan
ID: 103, Idade: 28, Primeiro: Sumit, Último: Mittal
C:\>

Tente o exemplo acima, passando um nome de banco de dados incorreto ou um nome de usuário ou senha incorretos, e verifique os resultados.