Para que possamos conectar uma aplicação Java à um banco de dados utilizando JDBC, utilizaremos uma sintaxe semelhante àquela utilizada para especificar uma URL (vista no capítulo Programando em Java para Redes). Como vimos, a primeira parte de uma URL especifica o prefixo de protocolo utilizado. JDBC definiu jdbc como prefixo de protocolo. A sintaxe de uma URL de JDBC é, portanto:
jdbc:[sub-protocolos]:[sub-nomes]
Um subprotocolo especifica como uma driver JDBC se comunica com um SGBD específico. Um subnome é uma string utilizada pelo subprotocolo para se comunicar com um SGBD específico, e sua sintaxe varia de acordo com o subprotocolo. O exemplo a seguir mostra como conectar-se a um banco de dados que está em execução em uma máquina local:
java.net.*;
java.sql.*;
public class teste_jdbc {
public static void main (String args[])
{
URL url = “jdbc:odbc:banco_de_dados”;
Connection db = DriverManager.getConnection(url,”abc”,””);
}
}
Utilizamos o método getConnection(),
definido dentro da classe java.sql.DriverManager, para tomar
um objeto URL e duas strings como argumentos (especificando
nome e senha para o banco de dados).
Após conectado, poderemos fazer manipulações
de dados com instruções SQL. Primeiramente,
definimos uma instrução SQL criando um objeto
Statement, definido dentro do pacote java.sql. Feito isso,
executamos a string SQL através do método executeQuery()
da classe Statement. Vejamos:
Statement sq_stmt = db.createStatement();
String sql_str = “SELECT nome FROM cadastro”;
ResultSet rs = sq_stmt.executeQuery(sql_str);
Depois de executar a consulta SQL através
da instrução SELECT, o método executeQuery
retorna um objeto ResultSet.
Para obter os resultados de uma consulta utilizando ResultSets,
percorreremos o objeto ResultSet até que o método
next() retorne false. Dentro do laço, iremos chamar
o método getxxx (nesse caso, getString) para obter
os campos pesquisados. Vejamos o exemplo:
java.net.*;
java.sql.*;
public class jdbc_teste {
public static void main(String args[])
{
URL url = “jdbc:odbc:banco_de_dados”;
Connection db = DriverManager.getConnection(url,”abc”,””);
Statement sq_stmt = db.createStatement();
String sql_str = “SELECT * FROM cadastro”;
ResultSet rs = sq_stmt.executeQuery(sql_str);
while (rs.next())
{
int id = rs.getInt(“id”);
String name = rs.getString(“nome”);
int shift = rs.getIbt(“email”);
System.out.println(“ID: “ + id);
System.out.println(“Nome: “ + nome);
System.out.println(“Email: “ + email + “
”);
}
}
}
Existem muitos métodos getxxx. Veja
a tabela:
getByte
getShort
getInt
getLong
getFloat
getDouble
getNumeric
getBoolean
getString
getBytes
getDate
getTime
getTimestamp
getAsciiStream
getUnicodeStream
getObject
Uma vez determinado qual campo é transformado em um método getxxx, você deve ter cuidado para não chamá-lo em um tipo que não possa ser transformado adequadamente em um tipo de dado SQL. Um tipo de conversão imprópria retornará uma SQLException. Veja a tabela de conversão de tipos SQL - Java:
Tipo SQL (Tipo Java)
CHAR (String)
VARCHAR (String)
LONGVARCHAR (String)
NUMERIC (java.sql.Numeric
(novo tipo))
DECIMAL (java.sql.Numeric
(novo tipo))
BIN (boolean)
TINYINT (byte)
SMALLINT (short)
INTEGER (int)
BIGINT (long)
REAL (float)
FLOAT (double)
DOUBLE (double)
BINARY (byte[])
VARBINARY (byte[])
LONGVARBINARY (byte[])
DATE (
java.sql.Date (novo tipo)
TIME (java.sql.Time
(novo tipo)
TIMESTAMP (java.sql.TimeStamp
(novo tipo)
Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.
Cristiano Trindade é desenvolvedor de sistemas e atualmente trabalha no mercado de aplicações para dispositivos móveis. Possui sólidos conhecimentos em Java, ASP, ASP.Net, ColdFusion e Javascript, C/C++, C# e Pascal.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.