Beruflich Dokumente
Kultur Dokumente
br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=27287
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.
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 ?
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.
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