JDBC
Java Database Connectivity
JDBC
• Especificação para uso de base de dados em
aplicações e applets JAVA;
• API para uso de drivers JDBC;
• Compatível com ANSI SQL-92.
Arquitetura JDBC
– Uma interface independente de SGDB
• “ambiente de acesso a SGDBs SQL genérico”
• Interface uniforme para diferentes fontes de dados.
– O programador escreve uma interface para
banco de dados, podendo acessar várias fontes
diferentes sem mudança de código.
Arquitetura JDBC
Ponte JDBC / ODBC
JDBC API
• Carregando drivers JDBC:
Class.forName(“jdbc.odbc.JdbcOdbcDriver”);
Class.forName(“j102.sql.IDSDriver”);
JDBC API
• Declarando uma URL
– Sintaxe:
• jdbc:<subprotocol>:<subname>
– subprotocol:indica o tipo de SGBD desejado
» odbc, oracle, etc
– subname: especificação adicional dependente do protocolo (Ex:
nome do datasource, usuário, senha, porta, etc...)
» Sintaxe do subname (recomendada pela Javasoft):
jdbc:<subprotocol>://hostname:port/subsubname
– Ex: jdbc:mysql://ppgia.pucpr.br:3333/BancoProfessores
JDBC API
• Estabelecendo uma Conexão
Connection con = DriverManager.getConnection(String
url, String User, String Pass);
Connection con = DriverManager.getConnection(String
url);
JDBC API
• Executando instruções
– Statement
• Executa uma instrução SQL fixa
– PreparedStatement
• Executa uma instrução SQL com parâmetros
– callableStatement
• Executa uma Stored Procedure
JDBC API
• Obtendo um objeto para execução
– Statement:
Statement stmt = con.createStatement();
– PreparedStatement
PreparedStatement pstmt =
con.prepareStatement(“INSERT INTO teste
(name,id) VALUES (?, ?)”);
– callableStatement
callableStatement cstmt =
con.prepareCall(“{call test_sp(?,?)}”;
Statement
• public int executeUpdate(String)
– Executa um comando SQL que não produz uma tabela
de resultados. Retorna o número de linhas afetadas, ou
0 se nenhum resultado for produzido
stmt.executeUpdate(“CREATE TABLE test (name
CHAR(25), id INT”);
stmt.executeUpdate(“INSERT INTO test VALUES
(´Brian´, 1)”);
Statement
• public ResultSet executeQuery(String)
– executa uma instrução SQL que produz como
resultado uma tabela
stmt.executeQuery(“SELECT * FROM test”);
PreparedStatement
• public void setString(int,String);
– Atribui o valor String ao parâmetro
especificado
• pstmt.setString(1,”John”);
• public void setInt(int par,int val);
– Atribui o valor val ao parâmetro par
• pstmt.setInt(2,1);
• public int executeUpdate();
• public int executeQuery();
Retornando Dados
• ResultSet
– Implementa uma tabela que contém o resultado
obtido de uma consulta
• ResultSetMetaData
– Implementa uma tabela que contém os metadados de um objeto ResultSet
• DatabaseMetaData
– Implementa uma tabela que contém os metadados de uma conexão
ResultSet - Exemplo
a
-------12345
83472
83492
b
-------------Cupertino
Redmond
Boston
c
-------4.5
3.56
0.02
Forma Geral
java.sql.Statement stmt = con.createStatement();
ResultSet r = stmt.executeQuery("SELECT a, b, c FROM
Table1");
while ( r.next( ) )
{
int i = r.getInt("a");
String s = r.getString("b");
float f = r.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}
Download

JDBC - PUCPR