JDBC - Java Data Base Connectivity JDBC API para Bases de Dados relacionais. Permite o desenvolvimento de aplicac~oes que interaem com BD relacionais de modo uniforme e independente dos diferentes SGBD. Peruntas SQL s~ao passadas como arumentos a metodos Java da API JDBC.
de: \Database Prorammin with JDBC and Java", Geore Reese 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 interair com todas as BD que suportem ODBC JDBC - arquitectura
JDBC - API de: \Database Prorammin with JDBC and Java", Geore Reese JDBC - Drivers de: \Database Prorammin with JDBC and Java", Geore Reese
Apresenta c~ao Java { conceitos B asicos Java { t opicos espec cos JDBC - utiliza c~ ao de drivers de: \Database Prorammin with JDBC and Java", Geore Reese Apresenta c~ao Java { conceitos B asicos Java { t opicos espec cos JDBC - utiliza c~ ao de Complementos de Prorama c~ao e Aloritmos { LEIC drivers de \Advanced Java Networkin", Prashant Sridharan Complementos de Prorama c~ao e Aloritmos { LEIC
JDBC - drivers Vendor JDBC Drv DBMS(s) Name API Type ver. InterBase MS Access MS SQL Server Easysoft 1.x 3 ODBC Oracle PostreSQL MS Access MS SQL Easysoft 2.x 3 Server Ltd ODBC Oracle PostreSQL... IDS Software 2.x 1,2,3,4 MySQL 4 jxdbcon 2.x 2 PostreSQL 4 PostreSQL Devel. 2.x 4 PostreSQL Group tabela completa e actualizada em: http://industry.java.sun.com/products/jdbc/drivers JDBC query envolve: I Liac~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 liac~ao I reistar um driver no DriverManaer I chamada explcita a new para carrear a nova implementac~ao do driver I usar a propriedade jdbc.drivers que carrea automaticamente as classes nesta lista I carrear a classe usando Class.forName(driver).newInstance(); que cria uma nova inst^ancia da classe I Connection ref = DriverManaer.etConnection(url, uid, pass); sintaxe do url: jdbc:nomedodriver//nomedamaquina/nomedabd ex: DriverManaer.etConnection(\jdbc:postresql//deec02ws16.fe.up.pt/bd1", \iweb","..."); Classes JDBC de acesso a BD java.sql.statement I metodo ResultSet executequery(strin SQLquery) chamadas SQl que devolvem daddos da BD I metodo int executeupdate(strin SQL) chamadas SQl de actualizac~ao. Devolve numero de linhas afectadas I metodo boolean execute(strin SQL) para quando n~ao se sabe se o SQL e uma query ou update usar etresultset() 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 eral dos metodos de acesso a colunas: tipo ettipo(intjstrin) em que o arumento e o numero da coluna ou o seu nome ex: resultset.etstrin(1); I boolean resultset.next(); referencia a proxima linha caso exista Interroac~ao a uma BD PostreSQL // BD com tabela cotacao(hora, empresa, cotacao) import java.sql.*; public class Liacao f public static void main(strin ars[]) f Strin url = "jdbc:postresql://deec02ws16.fe.up.pt/bd1"; Strin driver = "or.postresql.driver"; Connection con = null; try f Class.forName(driver).newInstance(); catch( Exception e ) f System.out.println("Failed to load PostreSQL driver."); return;
Interroac~ao a uma BD PostreSQL try f con = DriverManaer.etConnection(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 Strin emrpesa = result.etstrin(2); int cotacao = result.etint(3); System.out.println("empresa = " + empresa+"nncotacao = " + cotacao); catch(exception e)fe.printstacktrace(); nally f if(con!= null) try f con.close(); catch( Exception e ) f e.printstacktrace();