Upload
lamduong
View
217
Download
0
Embed Size (px)
Citation preview
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - Java Data Base Connectivity
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC
API para Bases de Dados relacionais. Permite o desenvolvimentode aplica�c~oes que interagem com BD relacionais de modo uniformee independente dos diferentes SGBD. Perguntas SQL s~ao passadascomo argumentos a m�etodos Java da API JDBC.
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC { caracter��sticas
I �E um conjunto de Interfaces Java que s~ao implementadas nasclasses dos drivers disponibilizados por cada vendedor
I JDBC �e uma API ao n��vel do SQLSQL queries passadas como parametros/objectos recebidos na resposta
I JDBC capitaliza em experiencias anterioesdisp~oe de uma ponte para Open DataBase Connectivity (ODBC)baseado na experiencia de Call Level Interface (SQL CLI)
I JDBC �e simples
I A ponte para ODBC permite interagir com todas as BD quesuportem ODBC
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - arquitectura
de: \Database Programming with JDBC and Java", George ReeseRui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - API
de: \Database Programming with JDBC and Java", George Reese
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - Drivers
de: \Database Programming with JDBC and Java", George Reese
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - utiliza�c~ao de drivers
de: \Database Programming with JDBC and Java", George Reese
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - utiliza�c~ao de drivers
de \Advanced Java Networking", Prashant Sridharan
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC - drivers
Vendor JDBC Drv DBMS(s)Name API Type
ver.InterBaseMS Access
MS SQL ServerEasysoft 1.x 3 ODBC
OraclePostgreSQLMS AccessMS SQL
Easysoft 2.x 3 ServerLtd ODBC
OraclePostgreSQL
.........IDS Software 2.x 1,2,3,4 MySQL
4jxDBCon 2.x 2 PostgreSQL
4PostgreSQL
Devel. 2.x 4 PostgreSQLGroup
tabela completa e actualizada em: http://industry.java.sun.com/products/jdbc/drivers
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC | query
envolve:
I Liga�c~ao �a Base de DadosI Envio do comando SQLI Recolha do resultado (objecto java.sql.ResultSet)I Apanhar as SQLException em qq probema entre o JDBC e
um qq SGBD
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
JDBC | liga�c~ao
I registar um driver no DriverManagerI chamada expl��cita a new para carregar a nova implementa�c~ao
do driverI usar a propriedade jdbc.drivers que carrega automaticamente
as classes nesta listaI carregar a classe usando
Class.forName(driver).newInstance();que cria uma nova instancia da classe
I Connection ref = DriverManager.getConnection(url, uid, pass);sintaxe do url: jdbc:nomeDoDriver//nomeDaMaquina/nomeDaBDex: DriverManager.getConnection(\jdbc:postgresql//deec02ws16.fe.up.pt/bd1", \iweb","...");
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
Classes JDBC de acesso a BD
| java.sql.Statement |
I m�etodo ResultSet executeQuery(String SQLquery)chamadas SQl que devolvem daddos da BD
I m�etodo int executeUpdate(String SQL)chamadas SQl de actualiza�c~ao. Devolve n�umero de linhas afectadas
I m�etodo boolean execute(String SQL)para quando n~ao se sabe se o SQL �e uma query ou updateusar getResultSet() para aceder aos dados devolvidos
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
Classes JDBC de acesso a BD
| java.sql.ResultSet |
Um ResultSet �e um conjunto de linhas resultado de uma query �aBD. As linhas e colunas s~ao acedidas atrav�es de m�etodos utilit�arios.
I forma geral dos m�etodos de acesso a colunas:tipo getTipo(intjString)em que o argumento �e o n�umero da coluna ou o seu nomeex: resultset.getSTring(1);
I boolean resultset.next(); referencia a pr�oxima linha caso exista
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
Interroga�c~ao a uma BD PostgreSQL
// BD com tabela cotacao(hora, empresa, cotacao)import java.sql.*;
public class Ligacao fpublic static void main(String args[]) fString url = "jdbc:postgresql://deec02ws16.fe.up.pt/bd1";String driver = "org.postgresql.Driver";Connection con = null;
try fClass.forName(driver).newInstance();
gcatch( Exception e ) fSystem.out.println("Failed to load PostgreSQL driver.");return;
g
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC
Apresenta�c~aoJava { conceitos B�asicosJava { t�opicos espec���cos
Interroga�c~ao a uma BD PostgreSQL
try fcon = DriverManager.getConnection(url, "iweb", "...");Statement select = con.createStatement();ResultSet result = select.executeQuery(
"SELECT hora,empresa, cotacao FROM cotacao");System.out.println("Resultado:");while(result.next()) f // processa uma linha de cada vezString emrpesa = result.getString(2);int cotacao = result.getInt(3);System.out.println("empresa = " + empresa+"nncotacao = " + cotacao);ggcatch(Exception e)fe.printStackTrace(); g�nally fif(con != null)try f con.close(); gcatch( Exception e ) f e.printStackTrace(); g
ggg
Rui Camacho Complementos de Programa�c~ao e Algoritmos { LEIC