java jdbc connection tutorial with programming example
Este tutorial de conexão JDBC explica as etapas básicas para um banco de dados com exemplos e fornece strings de conexão JDBC para bancos de dados diferentes:
perguntas e respostas da entrevista de rede da cisco pdf
No tutorial anterior do Série de tutoriais JDBC , aprendemos componentes, arquitetura e tipos de drivers em Java Database Connectivity (JDBC).
Neste tutorial, discutiremos as etapas para se conectar a bancos de dados usando JDBC. Este tutorial mostrará como fazer a conexão JDBC e realizar operações de banco de dados. A API JDBC atua como uma interface entre o programa Java e o banco de dados.
No final deste tutorial, você será capaz de escrever programas Java para se conectar a bancos de dados e realizar operações de banco de dados.
O que você aprenderá:
Etapas de conexão JDBC
Existem 6 etapas básicas para se conectar ao JDBC. Eles estão listados na imagem abaixo:

# 1) Importar Pacotes
Primeiro, precisamos importar os pacotes existentes para usá-los em nosso programa Java. A importação garantirá que as classes da API JDBC estejam disponíveis para o programa. Podemos então usar as classes e subclasses dos pacotes.
Independentemente do driver JDBC, inclua a seguinte instrução de importação no programa Java.
import java.sql.*;Importe as outras classes com base na funcionalidade que você usará no programa. Baixe os arquivos Jar apropriados para o banco de dados que você usará no programa.
Consulte o tutorial anterior para obter os links para fazer download dos arquivos Jar para seu banco de dados.
JDBC API 4.0 fornece principalmente 2 pacotes importantes:
- java.sql
- javax.sql
(i) pacote java.sql
Este pacote fornece classes e interfaces para executar a maioria das funções JDBC, como criar e executar consultas SQL.
| Classes / Interfaces | Descrição |
|---|---|
| DriverManager | Ele fornece serviço básico para gerenciar um conjunto de Drivers JDBC |
| BLOB | Representa o valor do SQL Blob no programa Java |
| CallableStatement | É usado para executar procedimentos armazenados SQL |
| CLOB | Representa o valor SQL Clob no programa Java |
| Conexão | Ele cria uma conexão (sessão) com um banco de dados específico |
| Encontro | Ele fornece suporte para o tipo Date SQL |
| Motorista | Cria uma instância de Driver com Gerenciador de Driver |
| ParameterMetaData | É um objeto que pode ser usado para obter informações sobre os tipos e propriedades de cada parâmetro em um objeto PreparedStatement |
| Declaração preparada | É usado para criar e executar uma consulta parametrizada no programa Java |
| ResultSet | É usado para acessar o resultado linha por linha |
| ResultSetMetaData | É usado para obter informações sobre os tipos e propriedades das colunas em um objeto ResultSet |
| RowId | Representa o valor SQL ROWID |
| Salvar ponto | Representa o ponto de salvamento na transação |
| SQLData | É usado para mapear o SQL User Defined Type (UDT) para uma classe no programa Java |
| SQLXML | Representa o tipo SQL XML |
| Demonstração | É usado para executar uma instrução SQL estática |
| DriverPropertyInfo | Ele fornece propriedades do driver para fazer uma conexão |
| SQLException | Ele fornece informações sobre erros de banco de dados |
| SQLTimeoutException | É uma subclasse de SQLException lançada quando o tempo limite especificado pela instrução expirou |
| SQLWarning | É uma exceção que fornece informações sobre avisos de acesso ao banco de dados |
| Struct | É um mapeamento padrão no programa Java para tipo estruturado SQL |
(ii) pacote javax.sql
É uma API de extensão JDBC e fornece acesso e processamento de dados do lado do servidor no Programa Java.
| Classes / Interfaces | Descrição |
|---|---|
| ConnectionEvent | Ele fornece informações sobre a ocorrência de eventos relacionados à conexão |
| CommonDataSource | É uma interface que define os métodos que são comuns entre DataSource, XADataSource e ConnectionPoolDataSource |
| ConnectionPoolDataSource | É uma fábrica para objetos PooledConnection |
| Fonte de dados | É uma fábrica para conexões com o DataSource físico que o objeto representa |
| PooledConnection | É usado para gerenciar o pool de conexão |
| RowSet | Ele fornece suporte para a API JDBC para Java Beans Component Model |
| RowSetMetadata | Ele contém as informações sobre as colunas em um objeto RowSet |
| ConnectionEventListener | É usado para registrar eventos do objeto PooledConnection |
| RowSetEvent | É gerado quando um evento ocorre para um objeto Rowset |
| StatementEvent | Ele é enviado a todos os StatementEventListeners que foram registrados com um PooledConnection gerado |
# 2) Carregar driver
Primeiro, devemos carregar / registrar o driver no programa antes de conectar ao Banco de Dados. Você precisa registrá-lo apenas uma vez por banco de dados no programa.
Podemos carregar o driver das duas maneiras a seguir:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
Desta forma, o arquivo de classe do driver é carregado na memória em tempo de execução. Ele carrega implicitamente o driver. Durante o carregamento, o driver será registrado no JDBC automaticamente.
| Nome DB | Nome do driver JDBC |
|---|---|
| Sybase | com.sybase.jdbcSybDriver |
| MySQL | com.mysql.jdbc.Driver |
| Oráculo | oracle.jdbc.driver.OracleDriver |
| Microsoft SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
| MS Access | net.ucanaccess.jdbc.UcanaccessDriver |
| PostgreSQL | org.postgresql.Driver |
| IBM DB2 | com.ibm.db2.jdbc.net.DB2Driver |
| TeraData | com.teradata.jdbc.TeraDriver |
Observação: O método forName () é válido apenas para máquinas virtuais compatíveis com JDK.
(ii) DriverManager.registerDriver ()
DriverManager é uma classe embutida que está disponível no pacote java.sql. Ele atua como um mediador entre o aplicativo Java e o banco de dados que você deseja conectar. Antes de conectar-se ao banco de dados, você precisa registrar o driver com DriverManager. A principal função do DriverManager é carregar a classe do driver do Banco de Dados e criar uma conexão com o DB.
Public static void registerDriver (driver) - Este método irá registrar o driver com o Driver Manager. Se o driver já estiver registrado, ele não executará nenhuma ação.
- Vai jogar SQLException se o erro de banco de dados ocorrer.
- Vai jogar Null Pointer Exception se o driver for nulo.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())Assim, você pode registrar o driver do seu Banco de Dados passando-o como parâmetro.
# 3) Estabelecer conexão
Depois de carregar o driver, a próxima etapa é criar e estabelecer a conexão. Uma vez necessário, os pacotes são importados e os drivers são carregados e registrados, então podemos ir para o estabelecimento de uma conexão de banco de dados.
A classe DriverManager possui o método getConnection, usaremos este método para obter a conexão com o banco de dados. Para chamar o método getConnection (), precisamos passar 3 parâmetros. Os 3 parâmetros são URL de tipo de dados de string, um nome de usuário e uma senha para acessar o banco de dados.
O método getConnection () é um método sobrecarregado. Os 2 métodos são:
- getConnection (URL, nome de usuário, senha); - Possui 3 parâmetros URL, nome de usuário, senha.
- getConnection (URL); - Possui apenas um parâmetro. URL também tem um nome de usuário e uma senha.
A tabela a seguir lista as strings de conexão JDBC para os diferentes bancos de dados:
| Base de dados | String de conexão / URL do banco de dados |
|---|---|
| Sybase | jdbc: Sybase: Tds: HOSTNAME: PORT / DATABASE_NAME |
| MySQL | jdbc: mysql: // HOST_NAME: PORT / DATABASE_NAME |
| Oráculo | jdbc: oracle: thin: @HOST_NAME: PORT: SERVICE_NAME |
| Microsoft SQL Server | jdbc: sqlserver: // HOST_NAME: PORT; DatabaseName = |
| MS Access | jdbc: ucanaccess: // DATABASE_PATH |
| PostgreSQL | jdbc: postgresql: // HOST_NAME: PORT / DATABASE_NAME |
| IBM DB2 | jdbc: db2: // HOSTNAME: PORT / DATABASE_NAME |
| TeraData | jdbc: teradata: // HOSTNAME / database =, tmode = ANSI, charset = UTF8 |
Exemplo:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)Aqui neste exemplo,
- fino refere-se ao tipo de driver.
- localhost é onde o banco de dados Oracle está sendo executado.
- 1521 é o número da porta para se conectar ao DB.
- veículo - SID
- Sistema - Nome de usuário para se conectar ao banco de dados Oracle.
- Pass123 @ - Senha
# 4) Criar e executar a instrução
Assim que a conexão for estabelecida, podemos interagir com o banco de dados conectado. Primeiro, precisamos criar a instrução para realizar a consulta SQL e, em seguida, executar a instrução.
(i) Criar Declaração
Agora vamos criar o objeto de instrução que executa a consulta com o banco de dados conectado. Usamos o método createStatement do Conexão classe para criar a consulta.
Existem 3 interfaces de instrução disponíveis no pacote java.sql. Eles são explicados abaixo:
uma afirmação
Essa interface é usada para implementar instruções SQL simples sem nenhum parâmetro. Ele retorna o objeto ResultSet.
Statement statemnt1 = conn.createStatement();b) PreparedStatement
Esta interface PreparedStatement estende a interface Statement. Portanto, ele tem mais recursos do que a interface de declaração. É usado para implementar instruções SQL parametrizadas e pré-compiladas. O desempenho do aplicativo aumenta porque ele compila a consulta apenas uma vez.
É fácil reutilizar essa interface com um novo parâmetro. Suporta o parâmetro IN. Mesmo nós podemos usar esta declaração sem qualquer parâmetro.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);c) CallableStatement
A interface CallableStatement estende a interface PreparedStatement. Portanto, ele tem mais recursos do que a interface PreparedStatement. É usado para implementar uma instrução SQL parametrizada que invoca o procedimento ou função no banco de dados. Um procedimento armazenado funciona como um método ou função em uma classe. Suporta os parâmetros IN e OUT.
A instância CallableStatement é criada chamando o método prepareCall do objeto Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');(ii) Execute a consulta
Existem 4 métodos importantes para executar a consulta na interface de instrução. Eles são explicados abaixo:
- ResultSet executeQuery (String sql)
- int executeUpdate (String sql)
- Boolean execute (String sql)
- int () executeBatch ()
a) ResultSet executeQuery (String sql)
O método executeQuery () na interface de instrução é usado para executar a consulta SQL e recuperar os valores do banco de dados. Ele retorna o objeto ResultSet. Normalmente, usaremos esse método para a consulta SELECT.
b) executeUpdate (String sql)
O método executeUpdate () é usado para executar consultas de valores especificados como INSERT, UPDATE, DELETE (instruções DML) ou instruções DDL que não retornam nada. Geralmente, usaremos esse método para inserir e atualizar.
c) executar (String sql)
O método execute () é usado para executar a consulta SQL. Retorna verdade se ele executa a consulta SELECT. E, ele retorna falso se ele executa a consulta INSERT ou UPDATE.
d) executeBatch ()
Este método é usado para executar um lote de consultas SQL ao banco de dados e, se todas as consultas forem executadas com sucesso, ele retorna uma matriz de contagens de atualização. Usaremos esse método para inserir / atualizar a maior parte dos registros.
# 5) Obter resultados
Quando executamos as consultas usando o método executeQuery (), o resultado será armazenado no objeto ResultSet. O objeto ResultSet retornado nunca será nulo, mesmo se não houver nenhum registro correspondente na tabela. O objeto ResultSet é usado para acessar os dados recuperados do banco de dados.
ResultSet rs 1= statemnt1.executeQuery(QUERY));Podemos usar o método executeQuery () para a consulta SELECT. Quando alguém tenta executar a consulta de inserção / atualização, ele lançará SQLExecption com a mensagem “ O método executeQuery não pode ser usado para atualização ”.
Um objeto ResultSet aponta para a linha atual no conjunto de resultados. Para iterar os dados no objeto ResultSet, chame o método next () em um loop while. Se não houver mais nenhum registro para ler, ele retornará FALSE.
ResultSet também pode ser usado para atualizar dados no banco de dados. Podemos obter os dados do ResultSet usando métodos getter, como getInt (), getString (), getDate (). Precisamos passar o índice da coluna ou o nome da coluna como o parâmetro para obter os valores usando os métodos Getter.
Saberemos mais sobre o ResultSet no próximo tutorial.
# 6) Fechar conexão
Finalmente, concluímos a manipulação de dados no banco de dados. Agora podemos fechar a conexão JDBC. Precisamos ter certeza de que fechamos o recurso depois de usá-lo. Se não os fecharmos corretamente, podemos acabar sem conexões.
Quando fechamos o objeto de conexão, os objetos Statement e ResultSet serão fechados automaticamente.
conn.close();Do Java 7 em diante, podemos fechar as conexões JDBC automaticamente usando um bloco try-catch. A conexão JDBC deve ser aberta entre parênteses do bloco try. Dentro do bloco try, você pode fazer as conexões do banco de dados normalmente como fazemos.
Uma vez que a execução sai do bloco try, ele fechará automaticamente a conexão. Nesse caso, não precisamos fechar a conexão chamando o método conn.close no programa Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation } Exemplo de conexão Java JDBC
Neste exemplo, você verá como implementar as 6 etapas básicas para se conectar ao banco de dados usando JDBC no programa Java.
Criar a tabela
Antes disso, primeiro crie uma tabela e adicione algumas entradas a ela.
Abaixo está a consulta SQL para criar uma tabela.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10)); Criada a tabela “employee_details” no banco de dados Oracle.

Inserir dados na tabela
Usando as seguintes consultas, insira os dados na tabela “employee_details”.
insert into employee_details values (1001, 'Luther', 'Martin', 'ml@gmail.com', 1, 13000); insert into employee_details values (1002, 'Murray', 'Keith', 'km@gmail.com', 2, 25000); insert into employee_details values (1003, 'Branson', 'John', 'jb@gmail.com', 3, 15000); insert into employee_details values (1004, 'Martin', 'Richard', 'rm@gmail.com', 4, 16000); insert into employee_details values (1005, 'Hickman', 'David', 'dh@gmail.com', 5, 17000); Programa Java
Baixe o arquivo JDBC jar e importe-o para o projeto Java.
package com.STH.JDBC; // import sql package to use it in our program import java.sql.*; public class Sample_JDBC_Program { public static void main(String() args) throws ClassNotFoundException, SQLException { // store the SQL statement in a string String QUERY = 'select * from employee_details'; //register the oracle driver with DriverManager Class.forName('oracle.jdbc.driver.OracleDriver'); //Here we have used Java 8 so opening the connection in try statement try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Created statement and execute it ResultSet rs1 = statemnt1.executeQuery(QUERY); { //Get the values of the record using while loop while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); //store the values which are retrieved using ResultSet and print it System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } } catch (SQLException e) { //If exception occurs catch it and exit the program e.printStackTrace(); } } }Resultado:

Pontos-chave a serem observados:
- Primeiro, precisamos importar os pacotes que usaremos em nosso programa Java para a conexão JDBC. Portanto, podemos usar as classes, subclasses e interfaces nos pacotes.
- Precisamos registrar ou carregar o driver com DriverManager antes de estabelecer uma conexão.
- Depois de registrar o driver, podemos estabelecer a conexão e realizar as operações.
- Usando uma interface de instrução, podemos criar e executar a consulta SQL. Para uma consulta SQL simples, podemos usar a interface de instrução. Para inserir / atualizar / excluir, podemos usar a interface PreparedStatement.
- Após a execução da instrução, os resultados serão armazenados no objeto ResultSet. Obtemos os resultados do objeto ResultSet usando o método next () para mais de 1 registro.
- Assim que terminarmos com a operação do banco de dados, precisamos fechar a conexão. Para que o recurso fique disponível para uso de terceiros.
perguntas frequentes
P # 1) Quais são as etapas fundamentais para se conectar ao banco de dados em Java?
Responda: Existem 6 etapas básicas para se conectar ao banco de dados em Java.
Eles estão:
- Import-Package
- Motorista de carga
- Estabelecer conexão
- Crie e execute a declaração
- Obter resultados
- Fechar conexão
Q # 2) Qual é a diferença entre os tipos de dados BLOB e CLOB em JDBC?
Responda:
BLOB é usado para conter o tipo binário de dados. O tamanho do armazenamento pode variar com base nos bancos de dados Exemplo: imagens, voz, vídeo.
CLOB é usado para conter o tipo de caractere dos dados. Como o CLOB, o espaço de armazenamento pode variar com base no banco de dados. Exemplo: arquivos.
P # 3) Qual método da classe DriverManager é usado para estabelecer uma conexão com o banco de dados?
Responda: A classe DriverManager possui um método getConnection () que é usado para estabelecer uma conexão com o banco de dados.
P # 4) Qual é a diferença entre Class.forName () e DriverManager.registerDriver ()?
Responda: Class.forName () - Primeiro, ele carrega o driver na memória e, em seguida, registra o driver apropriado no Gerenciador de Drivers. Em seguida, será criado um objeto do driver para realizar a conexão JDBC. Ele carregará o driver explicitamente.
DriverManager.registerDriver () - Ele registra o driver implicitamente.
P # 5) O que é um vazamento de conexão?
Responda: Esta situação ocorre quando uma conexão é aberta e você não a fechou. Se houver um bloco de código, que abre a conexão e não fecha a conexão. Sempre que esse bloco de código for executado, uma conexão vazará do pool de conexões.
Depois que todas as conexões disponíveis vazarem, nenhuma conexão estará disponível e o aplicativo irá travar. Quanto é importante abrir a conexão tanto é importante fechar a conexão.
diferença entre a árvore b e a árvore b +
P # 6) É obrigatório fechar a conexão?
Responda: Se você estiver usando versões do Java abaixo de 7, será necessário fechar a conexão manualmente.
Nas versões anteriores ao Java 7, podemos fechar a conexão automaticamente abrindo o código de conexão JDBC entre parênteses do bloco try. Assim que o programa sair do bloco try, ele fechará a conexão automaticamente.
Conclusão
Neste tutorial, discutimos como estabelecer uma conexão JDBC. Agora você pode realizar operações de banco de dados usando JDBC no programa Java. Exploramos as 6 etapas básicas para se conectar ao banco de dados. Precisamos importar os pacotes em nosso programa Java para usá-lo.
Depois de registrar o driver, podemos estabelecer a conexão. Podemos criar e executar a instrução SQL usando uma interface de instrução e recuperar os resultados no objeto ResultSet. Como última etapa, devemos fechar a conexão.
Leitura recomendada
- Tutorial Java JDBC: O que é JDBC (Java Database Connectivity)
- Interface Java e tutorial de classe abstrata com exemplos
- Gerenciamento de transações Java JDBC com exemplo
- JDBC DriverManager, JDBC PreparedStatement And Statement
- ResultSet JDBC: como usar o ResultSet Java para recuperar dados
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Introdução à linguagem de programação Java - tutorial em vídeo
- Teste de banco de dados Selenium (usando WebDriver e API JDBC)
