15

JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

Embed Size (px)

Citation preview

Page 1: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 2: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 3: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 4: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 5: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 6: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 7: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 8: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 9: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 10: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 11: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 12: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 13: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 14: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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

Page 15: JDBC - Java Data Base Connectivityrcamacho/cadeiras/cpa/acetatos/jdbc.pdf · ao c~ Apresenta Java { conceitosasicos B Java opicos{ cos t esp ec JDBC - Java Data Base Connectivity

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