Sie sind auf Seite 1von 6

www.devmedia.com.

br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=27287

Manipulando dados com JDBC em Java


Veja neste artigo como manipular dados com JDBC, iremos ver como
acessar e conectar ao banco de dados, alm de inserir, editar e deletar
dados no banco de dados.

Ol pessoal, nesse artigo vamos aprender a trabalhar um pouco com Java.


O Java uma das mais poderosas ferramentas de desenvolvimento do mundo, ganhando cada vez mais
adeptos e fs.

Acesso a dados com JDBC


Sem dvida alguma o acesso a dados um dos recursos mais utilizados na rea de desenvolvimento.
Praticamente todo o sistema precisa de um banco de dados, havendo raras excees.
O Java, diferente de linguagens como PHP, no suporta o acesso a banco de dados diretamente, para isso ele
usa uma API (conjunto de classes e interfaces) para fazer o servio. A JDBC (Java Database Connectivity),
faz o envio de instrues SQL para qualquer banco de dados relacional, desde que haja um driver que
corresponda ao mesmo presente.

Figura 1: Esquema de funcionamento do JDBC


Existem quatro tipos de drivers JDBC: 1, 2, 3 e 4, so eles:
Tipo 1: Ponte JDBC-ODBC

o tipo mais simples, mas restrito plataforma Windows. Utiliza ODBC para conectar-se com o banco de
dados, convertendo mtodos JDBC em chamadas s funes do ODBC. Esta ponte normalmente usada
quando no h um driver puro-Java (tipo 4) para determinado banco de dados, pois seu uso desencorajado
devido dependncia de plataforma.
Tipo 2: Driver API-Nativo
O driver API-Nativo traduz as chamadas JDBC para as chamadas da API cliente do banco de dados usado.
Como a Ponte JDBC-ODBC, pode precisar de software extra instalado na mquina cliente.
Tipo 3: Driver de Protocolo de Rede
Traduz a chamada JDBC para um protocolo de rede independente do banco de dados utilizado, que
traduzido para o protocolo do banco de dados por um servidor. Por utilizar um protocolo independente, pode
conectar as aplicaes clientes Java a vrios bancos de dados diferentes. o modelo mais flexvel.
Tipo 4: Driver nativo
Converte as chamadas JDBC diretamente no protocolo do banco de dados. Implementado em Java,
normalmente independente de plataforma e escrito pelos prprios desenvolvedores. o tipo mais
recomendado para ser usado.
Neste artigo vamos usar o tipo 4, por ser o mais recomendado, pois ele converte as chamadas diretamente
no protocolo do banco de dados em questo, dando assim uma performance melhor, alm, claro, de ser o
mais simples de se usar.
Muitos podem encontrar uma certa semelhana entre JDBC e ODBC; esto absolutamente corretos, podemos
dizer a "grosso modo" que as duas seguem a mesma ideia. Ambas funcionam como meio de comunicao
Banco X Aplicao, porm, ODBC uma aplicao Windows restrita apenas a ele, enquanto a JDBC, por ser
escrita em Java, multiplataforma.
Outra das vantagens da JDBC o fato dela funcionar como uma camada de abstrao de dados.
Independente do SGBD utilizado, a API ser a mesma, facilitando muito a vida dos programadores caso haja
a necessidade de uma migrao de banco.
Agora vamos ver como se conectar por meio do JDBC a uma base de dados Oracle.
Listagem 1: Conectando a uma base Oracle
Connection connection = null;
try {
// Load the JDBC driver
String driverName = "oracle.jdbc.driver.OracleDriver";
Class.forName(driverName);
// Create a connection to the database
String serverName = "127.0.0.1";
String portNumber = "1521";
String sid = "mydatabase";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "username";
String password = "password";
connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
// Could not find the database driver
} catch (SQLException e) {
// Could not connect to the database
}

O cdigo bem padronizado, colocamos o ip do servidor, nmero de porta, nome da base de dados, nome de
usurio e senha, alm de colocar o driver de conexo.
Agora veremos como acessar uma base de dados em MySQL
Listagem 2: Acessando uma base de dados MySQL
Connection connection = null;
try {
// Load the JDBC driver
String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
Class.forName(driverName);
// Create a connection to the database
String serverName = "localhost";
String mydatabase = "mydatabase";
String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "username";
String password = "password";
connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
// Could not find the database driver
} catch (SQLException e) {
// Could not connect to the database
}

Note que a diferena do cdigo da listagem 1 para a listagem 2 apenas o nome do driver que muda de
jdbc:oracle para jdbc:mysql e sua aplicao tambm.

Como fazer o load do driver JDBC


Agora veremos como fazer o load de um driver JDBC, nesse exemplo vamos fazer o load do driver do MySQL.
Listagem 3: Load no driver JDBC
try {
// Load the JDBC driver
String driverName = "org.gjt.mm.mysql.Driver";
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// Could not find the driver
}

Vamos entender melhor agora o que cada comando quer dizer.


Class.forName - Esse sem dvida o comando principal. atravs dele que estamos chamando o driver
JDBC.
Connection - Aqui estamos criando um objeto do tipo "Connection". nele que ficam armazenadas as
informaes da sua conexo com o banco. Para ser mais direto, usamos o mtodo "getConnection" do objeto
"DriverManager" contido no "java.sql" ao invs do construtor padro, isso faz com que a conexo seja
estabelecida imediatamente. Repare na string passada como parmetro, nela esto contidas as informaes
da nossa conexo, so elas respectivamente: driver JDBC, host, caminho do banco, usurio e por ultimo a
senha.

Statement - uma declarao simples, porm vital para qualquer projeto. O objeto "Statement" o
responsvel por receber os comandos SQL e fazer o envio das informaes, assim como o retorno.
Agora que j sabemos como criar a conexo e como carregar o driver, o que acham de vermos algumas
operaes bsicas ?

Excluindo todos os registros da tabela


Veremos agora como excluir todos os registros de uma tabela. Muito cuidado com esse cdigo, pois ele ir
limpar todos os registros de sua tabela.
Listagem 4: Excluindo todos os registros com JDBC
try {
Statement stmt = connection.createStatement();
// Use TRUNCATE
String sql = "TRUNCATE my_table";
// Use DELETE
sql = "DELETE FROM my_table";
// Execute deletion
stmt.executeUpdate(sql);
} catch (SQLException e) {
}

Como sabemos, excluir todos os registros muito perigoso e pouco usado, na prxima listagem iremos ver
como excluir apenas um registro.
Listagem 5: Excluindo apenas um registro com JDBC
try {
// Create a statement
Statement stmt = connection.createStatement();
// Prepare a statement to insert a record
String sql = "DELETE FROM my_table WHERE col_string='a string'";
// Execute the delete statement
int deleteCount = stmt.executeUpdate(sql);
// deleteCount contains the number of deleted rows
// Use a prepared statement to delete
// Prepare a statement to delete a record
sql = "DELETE FROM my_table WHERE col_string=?";
PreparedStatement pstmt = connection.prepareStatement(sql);
// Set the value
pstmt.setString(1, "a string");
deleteCount = pstmt.executeUpdate();
System.err.println(e.getMessage());
} catch (SQLException e) {
}

Dessa forma ns conseguimos excluir apenas um registro, aquele que passamos por parmetro.

Inserindo registros com JDBC


Se quisermos inserir um registro em uma tabela de banco de dados muito simples, basta inserir o cdigo a
seguir.
Listagem 6: Inserindo dados no banco
try {
Statement stmt = connection.createStatement();
// Prepare a statement to insert a record
String sql = "INSERT INTO my_table (col_string) VALUES('a string')";
// Execute the insert statement
stmt.executeUpdate(sql);
} catch (SQLException e) {
}

Alterando registros
Caso queira editar ou alterar um registro da tabela, tambm muito simples, basta usarmos o cdigo da
listagem 7.
Listagem 7: Alterando registros
try {
Statement stmt = connection.createStatement();
// Prepare a statement to update a record
String sql = "UPDATE my_table SET col_string='a new string' WHERE col_string = 'a string'";
// Execute the insert statement
int updateCount = stmt.executeUpdate(sql);
// updateCount contains the number of updated rows
} catch (SQLException e) {
}

Concluso
Acredito que qualquer desenvolvedor Java Web, antes mesmo de saber qualquer framework como Hibernate,
Struts, JSF, etc, deve saber primeiro o JDBC. Esse o ponto de partida para o desenvolvimento web em
Java.
Espero que tenham gostado do artigo e at a prxima vez.

RicardoArrigoni
CursandoMarketingnaUniCarioca,trabalhandocomMarketingdigitaldesde2012comespecializaoemSEOelinkspatrocinados.
ProfissionalcertificadoGoogleAdwordsExpertSearch.Portfolio:http://www.ricardoarrigoni.com.br

Das könnte Ihnen auch gefallen