JDBC - Conexões de banco de dados

Depois de instalar o driver apropriado, é hora de estabelecer uma conexão de banco de dados usando JDBC.

A programação envolvida para estabelecer uma conexão JDBC é bastante simples. Aqui estão estas quatro etapas simples -

  • Import JDBC Packages: Adicionar import instruções para seu programa Java para importar as classes necessárias em seu código Java.

  • Register JDBC Driver: Esta etapa faz com que a JVM carregue a implementação do driver desejada na memória para que possa atender às suas solicitações JDBC.

  • Database URL Formulation: Isso é para criar um endereço formatado corretamente que aponta para o banco de dados ao qual você deseja se conectar.

  • Create Connection Object:Finalmente, codifique uma chamada para o método getConnection () do objeto DriverManager para estabelecer a conexão real com o banco de dados.

Importar pacotes JDBC

o Import declarações informam ao compilador Java onde encontrar as classes às quais você faz referência em seu código e são colocadas bem no início de seu código-fonte.

Para usar o pacote JDBC padrão, que permite selecionar, inserir, atualizar e excluir dados em tabelas SQL, adicione as seguintes importações ao seu código-fonte -

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

Registrar driver JDBC

Você deve registrar o driver em seu programa antes de usá-lo. O registro do driver é o processo pelo qual o arquivo de classe do driver Oracle é carregado na memória, para que possa ser utilizado como uma implementação das interfaces JDBC.

Você precisa fazer este registro apenas uma vez em seu programa. Você pode registrar um driver de uma das duas maneiras.

Abordagem I - Class.forName ()

A abordagem mais comum para registrar um driver é usar o Java Class.forName(), para carregar dinamicamente o arquivo de classe do driver na memória, que o registra automaticamente. Este método é preferível porque permite que você torne o registro do driver configurável e portátil.

O exemplo a seguir usa Class.forName () para registrar o driver Oracle -

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Você pode usar getInstance() método para contornar JVMs não compatíveis, mas então você terá que codificar para duas exceções extras da seguinte maneira -

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

Abordagem II - DriverManager.registerDriver ()

A segunda abordagem que você pode usar para registrar um driver é usar o estático DriverManager.registerDriver() método.

Você deve usar o método registerDriver () se estiver usando uma JVM não compatível com JDK, como a fornecida pela Microsoft.

O exemplo a seguir usa registerDriver () para registrar o driver Oracle -

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Formulação de URL de banco de dados

Depois de carregar o driver, você pode estabelecer uma conexão usando o DriverManager.getConnection()método. Para uma referência fácil, deixe-me listar os três métodos DriverManager.getConnection () sobrecarregados -

  • getConnection (String url)

  • getConnection (String url, Propriedades prop)

  • getConnection (String url, String usuário, String senha)

Aqui, cada formulário requer um banco de dados URL. Um URL de banco de dados é um endereço que aponta para seu banco de dados.

A formulação de um URL de banco de dados é onde ocorre a maioria dos problemas associados ao estabelecimento de uma conexão.

A tabela a seguir lista os nomes de driver JDBC populares e a URL do banco de dados.

RDBMS Nome do driver JDBC Formato de URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname / databaseName
ORÁCULO oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname: número da porta: databaseName
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:nome do host: número da porta / nome do banco de dados
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:nome do host: número da porta / nome do banco de dados

Toda a parte destacada no formato de URL é estática e você precisa alterar apenas a parte restante de acordo com a configuração do banco de dados.

Criar objeto de conexão

Listamos três formas de DriverManager.getConnection() método para criar um objeto de conexão.

Usando um URL de banco de dados com nome de usuário e senha

A forma mais comumente usada de getConnection () requer que você passe um URL de banco de dados, um nome de usuário e uma senha :

Supondo que você esteja usando o Oracle thin driver, você especificará um valor host: port: databaseName para a parte do banco de dados da URL.

Se você tiver um host no endereço TCP / IP 192.0.0.1 com um nome de host amrood e seu ouvinte Oracle estiver configurado para escutar na porta 1521 e o nome do seu banco de dados for EMP, o URL completo do banco de dados seria -

jdbc:oracle:thin:@amrood:1521:EMP

Agora você tem que chamar o método getConnection () com nome de usuário e senha apropriados para obter um Connection objeto da seguinte forma -

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

Usando apenas um URL de banco de dados

Uma segunda forma do método DriverManager.getConnection () requer apenas um URL de banco de dados -

DriverManager.getConnection(String url);

No entanto, neste caso, o URL do banco de dados inclui o nome de usuário e a senha e tem a seguinte forma geral -

jdbc:oracle:driver:username/password@database

Portanto, a conexão acima pode ser criada da seguinte forma -

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

Usando um URL de banco de dados e um objeto de propriedades

Uma terceira forma do método DriverManager.getConnection () requer um URL de banco de dados e um objeto Propriedades -

DriverManager.getConnection(String url, Properties info);

Um objeto Properties contém um conjunto de pares de palavras-chave e valores. É usado para passar propriedades do driver ao driver durante uma chamada ao método getConnection ().

Para fazer a mesma conexão feita pelos exemplos anteriores, use o seguinte código -

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

Fechando conexões JDBC

No final do programa JDBC, é necessário fechar explicitamente todas as conexões com o banco de dados para encerrar cada sessão do banco de dados. No entanto, se você esquecer, o coletor de lixo do Java fechará a conexão ao limpar objetos obsoletos.

Depender da coleta de lixo, especialmente na programação de banco de dados, é uma prática de programação muito pobre. Você deve criar o hábito de sempre fechar a conexão com o método close () associado ao objeto de conexão.

Para garantir que uma conexão seja fechada, você pode fornecer um bloco 'finalmente' em seu código. Um bloco finally sempre executa, independentemente de uma exceção ocorrer ou não.

Para fechar a conexão aberta acima, você deve chamar o método close () da seguinte maneira -

conn.close();

Fechar explicitamente uma conexão conserva os recursos do DBMS, o que deixará o administrador do banco de dados feliz.

Para um melhor entendimento, sugerimos que você estude nosso tutorial JDBC - Sample Code .