Depois que uma conexão é obtida, podemos interagir com o banco de dados. Métodos e propriedades definidas na instrução JDBC, interfaces CallableStatement e PreparedStatement permitem o envio de comandos SQL ou PL/SQL e recebendo dados do banco de dados.
Eles também definem métodos que ajudam a converter diferenças de dados entre Java e bancos de dados usando tipos de dados SQL.
A tabela a seguir fornece uma visão geral de como cada interface é usada para entender qual interface usar
Objeto de declaração:
Crie um objeto de declaração
Quando você pode usar o objeto de instrução para executar as instruções SQL, você precisa usar o método CreateStatement () do objeto de conexão para criar um, como mostrado no exemplo a seguir:
Declaração stmt = null; tente {stmt = conn.createstatement (); . . .} Catch (sqLexception e) {. . .} finalmente { . . .}Depois que um objeto de declaração é criado, ele pode ser usado para executar instruções SQL com um de seus três métodos de execução.
Execute booleano (string sql): retorna o valor booleano true se o objeto ResultSet puder ser recuperado, caso contrário, retornará falsa. Use este método para executar instruções SQL DDL ou ao usar o SQL dinâmico real.
Int ExecuteUpdate (String SQL): Retorna o número de linhas executadas pela instrução SQL afetada. Use este método para executar e espero obter algumas linhas afetadas de instruções SQL - por exemplo, inserir, atualizar ou excluir instruções.
ResultSet ExecuteQuery (String SQL): Retorna o objeto ResultSet. Use este método quando deseja obter um conjunto de resultados, assim como o uso de uma instrução SELECT.
Feche o objeto de declaração:
Assim como o fechamento de um objeto de conexão para manter um recurso de banco de dados, o objeto de declaração deve ser fechado pelo mesmo motivo.
Uma chamada simples para o método Close () fará o trabalho. Se o objeto de conexão estiver fechado primeiro, ele fechará o objeto de declaração também. No entanto, o objeto de declaração deve sempre ser explicitamente fechado para garantir a liberação adequada.
Declaração stmt = null; tente {stmt = conn.createstatement (); . . .} Catch (sqLexception e) {. . .} finalmente {stmt.close ();}
Objeto preparado de estatamento
A interface PreparedStatement estende a interface de instrução, permitindo que vários recursos avançados sejam adicionados a um objeto de declaração comum.
A instrução fornece flexibilidade para parâmetros dinâmicos.
Crie um objeto preparado:
Preparado estatamento pstmt = null; tente {string sql = "Atualizar funcionários definir idade =? Onde id =?"; Pstmt = Conn.Preparestatement (SQL); . . .} Catch (sqLexception e) {. . .} finalmente { . . .}Todos os parâmetros no JDBC estão representados? Símbolo, que é um marcador de parâmetros conhecido. Antes de executar a instrução SQL, cada parâmetro do valor deve ser fornecido.
O método setxxx () vincula o valor a um parâmetro, onde xxx representa o tipo de dados Java que você deseja vincular ao valor do parâmetro de entrada. Se você esquecer de fornecer o valor, receberá uma SqLexception.
Cada tag de parâmetro é referenciada por sua posição de número de sequência. A primeira marca indica a posição 1, a próxima posição é 2 e assim por diante. Este método é diferente da indexação de matriz Java, começando com 0.
Todos os métodos de objetos de instrução para interagir com o banco de dados (a) execute (), (b) executeQuery () e (c) executeUpdate () também trabalham com objetos preparados. No entanto, o método é modificado para usar as instruções SQL, que podem utilizar os parâmetros de entrada.
Feche o objeto preparado da estatição:
Assim como o fechamento de um objeto de declaração, pelo mesmo motivo, o objeto preparado da estatição também deve ser fechado.
Uma chamada simples para o método Close () fará o trabalho. Se o objeto de conexão estiver fechado, ele fechará primeiro o objeto preparado da estatição. No entanto, o objeto Preparado de Estaturas deve sempre ser explicitamente fechado para garantir a folga correta.
Preparado estatamento pstmt = null; tente {string sql = "Atualizar funcionários definir idade =? Onde id =?"; Pstmt = Conn.Preparestatement (SQL); . . .} Catch (sqLexception e) {. . .} finalmente {pstmt.close ();} Instância de estatamento preparado
Aqui estão exemplos disso fazendo uso da estatição preparada e ativando as declarações ligadas e desligadas:
Copie o seguinte exemplo jdbcexample.java, compilar e execute como mostrado abaixo:
// Etapa 1. Importar pacotes necessários String final estática db_url = "jdbc: mysql: // localhost/empp"; // credenciais de banco de dados estático final string user = "nome de usuário"; estático final string pass = "senha"; public static void main (string [] args) {conexão conn = null; Preparado estatamento stmt = null; tente {// Etapa 2: Registre JDBC Driver Class.ForName ("com.mysql.jdbc.driver"); // Etapa 3: abra um sistema de conexão.out.println ("conectando ao banco de dados ..."); Conn = DriverManager.getConnection (db_url, usuário, passa); // Etapa 4: execute um sistema de consulta.out.println ("criando declaração ..."); String sql = "Atualizar funcionários definir idade =? Onde id =?"; stmt = Conn.Preparestatement (SQL); // liga os valores nos parâmetros. stmt.setInt (1, 35); // isso definiria a idade sTMT.setInt (2, 102); // isso definiria ID // vamos atualizar a idade do registro com ID = 102; int linhas = stmt.executeUpdate (); System.out.println ("linhas impactadas:" + linhas); // Vamos selecionar todos os registros e exibi -los. sql = "Selecione ID, primeiro, último, idade dos funcionários"; ResultSet rs = stmt.executeQuery (SQL); // Etapa 5: extraia dados do conjunto de resultados enquanto (rs.Next ()) {// recuperar pelo nome da coluna int id = rs.getInt ("id"); int age = rs.getInt ("idade"); String primeiro = rs.getString ("primeiro"); String last = rs.getString ("last"); // Exibir valores system.out.print ("id:" + id); System.out.print (", idade:" + idade); System.out.print (", primeiro:" + primeiro); System.out.println (", last:" + last); } // Etapa 6: ambiente de limpeza rs.close (); stmt.close (); Conn.Close (); } catch (sqlexception se) {// manipula erros para jdbc SE.printStackTrace (); } catch (Exceção e) {// manipula erros para class.ForName E.PrintStackTrace (); } finalmente {// Finalmente o bloco usado para fechar os recursos tente {if (stmt! = null) stmt.close (); } catch (sqLexception SE2) {} // nada que possamos fazer tente {if (conn! = null) conn.close (); } catch (sqLexception SE) {SE.printStackTrace (); } // Finalmente, finalmente tente} // End Try System.out.println ("Adeus!"); } // END PRINCIPAL} // END JDBCEXAMPLEAgora vamos compilar o exemplo acima da seguinte maneira:
C:> javac jdbcexample.java
Ao executar o JDBCExample, ele produz os seguintes resultados:
C:> Java Jdbcexample
Conectando -se ao banco de dados ... Criando declaração ... linhas impactadas: 1id: 100, idade: 18, primeiro: zara, Última: Aliid: 101, idade: 25, primeiro: mahnaz, Último: Fatmaid: 102, idade: 35, primeiro: zaid, Último: Khanid: 103, idade: 30, primeiro: sumit, Último: zaid!