JDBC - Java Data Base Connectivity
JDBC API para Bases de Dados relacionais. Permite o desenvolvimento de aplicac~oes 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.
JDBC { caractersticas I E um conjunto de Interfaces Java que s~ao implementadas nas classes dos drivers disponibilizados por cada vendedor I JDBC e uma API ao nvel do SQL SQL queries passadas como par^ametros/objectos recebidos na resposta I 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 JDBC e simples I A ponte para ODBC permite interagir com todas as BD que suportem ODBC
JDBC - arquitectura Apresentac~ao de: \Database Programming with JDBC and Java", George Reese
JDBC - API Apresentac~ao de: \Database Programming with JDBC and Java", George Reese
JDBC - Drivers Apresentac~ao de: \Database Programming with JDBC and Java", George Reese
JDBC - utilizac~ao de drivers de: \Database Programming with JDBC and Java", George Reese
JDBC - utilizac~ao de drivers de \Advanced Java Networking", Prashant Sridharan
JDBC - drivers Vendor JDBC Drv DBMS(s) Name API Type ver. InterBase MS Access MS SQL Server Easysoft 1.x 3 ODBC Oracle PostgreSQL MS Access MS SQL Easysoft 2.x 3 Server Ltd ODBC Oracle PostgreSQL... IDS Software 2.x 1,2,3,4 MySQL 4 jxdbcon 2.x 2 PostgreSQL 4 PostgreSQL Devel. 2.x 4 PostgreSQL Group tabela completa e actualizada em: http://industry.java.sun.com/products/jdbc/drivers
JDBC query envolve: I Ligac~ao a Base de Dados I Envio do comando SQL I Recolha do resultado (objecto java.sql.resultset) I Apanhar as SQLException em qq probema entre o JDBC e um qq SGBD
JDBC ligac~ao I registar um driver no DriverManager I chamada explcita a new para carregar a nova implementac~ao do driver I usar a propriedade jdbc.drivers que carrega automaticamente as classes nesta lista I carregar a classe usando Class.forName(driver).newInstance(); que cria uma nova inst^ancia da classe I Connection ref = DriverManager.getConnection(url, uid, pass); sintaxe do url: jdbc:nomedodriver//nomedamaquina/nomedabd ex: DriverManager.getConnection(\jdbc:postgresql//deec02ws16.fe.up.pt/bd1", \iweb","...");
Classes JDBC de acesso a BD java.sql.statement I metodo ResultSet executequery(string SQLquery) chamadas SQl que devolvem daddos da BD I metodo int executeupdate(string SQL) chamadas SQl de actualizac~ao. Devolve numero de linhas afectadas I metodo 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
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 metodos de acesso a colunas: tipo gettipo(intjstring) em que o argumento e o numero da coluna ou o seu nome ex: resultset.getstring(1); I boolean resultset.next(); referencia a proxima linha caso exista
Interrogac~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
Interrogac~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