Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - Java Data Base Connectivity Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC API para Bases de Dados relacionais. Permite o desenvolvimento de aplicaco~es que interagem com BD relacionais de modo uniforme e independente dos diferentes SGBD. Perguntas SQL s~ao passadas como argumentos a metodos Java da API JDBC. Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC { caracter sticas I E um conjunto de Interfaces Java que s~ ao implementadas nas classes dos I disponibilizados por cada vendedor JDBC e uma API ao n vel do SQL SQL I drivers queries passadas como par^ametros/objectos recebidos na resposta JDBC capitaliza em experi^ encias anterioes disp~ oe de uma ponte para Open DataBase Connectivity (ODBC) baseado na experi^ encia de Call Level Interface (SQL CLI) I I JDBC e simples A ponte para ODBC permite interagir com todas as BD que suportem ODBC Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - arquitectura de: \Database Programming with JDBC and Java", George Reese Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - API de: \Database Programming with JDBC and Java", George Reese Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - Drivers de: \Database Programming with JDBC and Java", George Reese Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - utiliza c~ ao de drivers de: \Database Programming with JDBC and Java", George Reese Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - utiliza c~ ao de drivers de \Advanced Java Networking", Prashant Sridharan Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC - drivers Vendor Name JDBC API ver. Drv Type Easysoft 1.x 3 Easysoft Ltd 2.x 3 IDS Software 2.x jxDBCon 2.x ......... 1,2,3,4 4 2 4 DBMS(s) InterBase MS Access MS SQL Server ODBC Oracle PostgreSQL MS Access MS SQL Server ODBC Oracle PostgreSQL MySQL PostgreSQL PostgreSQL Devel. 2.x 4 PostgreSQL Group tabela completa e actualizada em: http://industry.java.sun.com/products/jdbc/drivers Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC | query envolve: I I I I Ligac~ao a Base de Dados Envio do comando SQL Recolha do resultado (objecto java.sql.ResultSet) Apanhar as SQLException em qq probema entre o JDBC e um qq SGBD Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos JDBC | I ligac~ ao registar um I driver no DriverManager new chamada expl cita a do driver para carregar a nova implementa c~ ao I usar a propriedade jdbc.drivers que carrega automaticamente I carregar a classe usando as classes nesta lista Class.forName(driver).newInstance(); que cria uma nova inst^ ancia da classe I Connection ref = DriverManager.getConnection(url, uid, pass); sintaxe do url: nomeDoDriver//nomeDaMaquina/nomeDaBD jdbc: ex: DriverManager.getConnection(\jdbc:postgresql//deec02ws16.fe.up.pt/bd1", \iweb","..."); Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos 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 update usar getResultSet() para aceder aos dados devolvidos Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos Classes JDBC de acesso a BD | java.sql.ResultSet | Um ResultSet e um conjunto de linhas resultado de uma query a BD. As linhas e colunas s~ao acedidas atraves de metodos utilitarios. I forma geral dos m etodos de acesso a colunas: tipo get Tipo (intjString) em que o argumento e o n umero da coluna ou o seu nome ex: resultset.getSTring(1); I boolean resultset.next(); referencia a pr oxima linha caso exista Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos Interroga c~ ao a uma BD PostgreSQL // BD com tabela cotacao(hora, empresa, cotacao) import java.sql.*; public class Ligacao f public static void main(String args[]) f String url = "jdbc:postgresql://deec02ws16.fe.up.pt/bd1"; String driver = "org.postgresql.Driver"; Connection con = null; try f Class.forName(driver).newInstance(); g catch( Exception e ) f System.out.println("Failed to load PostgreSQL driver."); return; g Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC Apresentac~ao Java { conceitos Basicos Java { topicos especcos Interroga c~ ao a uma BD PostgreSQL try f con = 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 vez String emrpesa = result.getString(2); int cotacao = result.getInt(3); System.out.println("empresa = " + empresa+"nncotacao = " + cotacao); g g catch(Exception e)fe.printStackTrace(); g nally f if(con != null) try f con.close(); g catch( Exception e ) f e.printStackTrace(); g g g g Rui Camacho Complementos de Programac~ao e Algoritmos { LEIC