În majoritatea aplicațiilor pe care le vom găsi, o bază de date va apărea ca o sursă de informații.JDBC ne va permite să accesăm bazele de date (BD) de la Java. COUNDBC Nu este necesar să scrieți diferite programe pentru diferite BD, dar un singur program servește la accesul BD de distincție. Chiar și putem accesa mai mult de un BD de distincții (Oracle, Access, MySQL, etc.) în aceeași aplicație. Ne putem gândi la JDBC ca podul dintre o bază de date și programul nostru Java. Un exemplu simplu poate fi un applet care eșantionați informațiile conținute într-o bază de date. Apletul va utiliza JDBC pentru a obține astfel de date.
Schema care trebuie urmată într-un program care utilizează JDBC este după cum urmează:
un program Java care utilizează JDBC Trebuie să stați mai întâi o conexiune cu SGBD. Pentru a face o astfel de conexiune, vom folosi un anumit driver pentru fiecare SGBD pe măsură ce noi stabilim. Odată ce conexiunea a fost stabilită și putem notnter BD cu nici o comandă SQL (selectați, actualizați, creați etc.). Rezultatul unei comenzi SELECT este un obiect Laclase ResultSet, care conține datele care returnează interogarea. Avem metode compuse pentru a gestiona doamnele returnate. De asemenea, putem efectua orice mijloace în SQL (crearea de tabele, managementul deusear etc.).
pentru a le îndeplini Operațiuni Vor trebui să avem un sistem SGBD (sistem de manager de bază de date), precum și o unitate de conducere pentru a putea accesa acest SGBD. Vom folosi SGBD: MySQL (disponibil pentru Windows și Linux, Libredsistribuție) și postgres (numai pentru Linux, Distribuție gratuită).
Drivere de acces
Drivere pentru a putea accesa Fiecare SGBD nu face parte din ladistribuția lui Java, astfel încât să le obținem pe cei răi. De ce să folosiți un șofer?. Problema ElPrincipal care poate fi luată în considerare este că fiecare SGBD are propria sa API (majoritatea proprietarului), astfel încât o creștere SGBD implică o modificare a codului nostru. Sicolocammos Un strat intermediar, putem abstrade conectivitate, de la Talform pe care îl folosim un obiect pentru conexiune, iar Eldriver este responsabil pentru traducerea apelului la API. Șoferul va simpatiza companiile care produc SGBD.
Tipuri de drivere
Există un standard stabilit care împarte driverele cu patru mâini:
- Tipul 1: Podul JDBC-ODBC. ODBC (Conectivitate de bază de date deschisă) a fost creată pentru a oferi o conexiune la bazele de date din Microsoft Windows. ODBC permite accesul la baze de date din diferite limbi de programare, cum ar fi C și Cobol. Podul JDBC-ODBC vă permite să conectați Java cu orice bază de date disponibilă în ODBC. Utilizarea acestui tip de șofer nu este recomandată atunci când trebuie să accesăm bazele de date de înaltă performanță, deoarece funcționalitățile sunt limitate la cele pe care Brandul ODBC. Fiecare client trebuie să aibă șoferul instalat. J2SE include acest driver în versiunea sa Windows și Solaris.
- Tipul 2: Partea Java, Nativul de șofer din parte. Este o combinație de implementare Java și API nativ pentru accesul la baza de date. Acest tip de șofer este mai rapid decât cel precedent, deoarece pasul nu este efectuat de stratul ODBC. Apelurile JDBC sunt traduse în apeluri specifice din baza de date API. Fiecare client trebuie să aibă șoferul instalat. Are mai puține performanțe decât următoarele două și nu pot fi folosite pe Internet, deoarece aveți nevoie de API la nivel local.
- Tipul 3: Accesați baza de date Intermediar Server.Acest tip de driverproforturi O abstracție a conexiunii. Clientul se confruntă cu SGBD de către o componentă a serverului intermediar, care acționează ca un non-porter pentru mai multe servere. Avantajul acestui tip dedriver este nivelul de abstractizare. Serverul de aplicații WebLogic încorporează acest tip de driver.
- Tipul 4: Drivere Java. Aceasta este cea mai directă. Llallamada JDBC este tradusă într-o rețea de apel la baza de date, sinternations. Asigurați performanțe egale. Cele mai multe SGBD oferă drivere de tip umed.
Instalarea driverelor
Distribuția JDBC încorporează Drivere pentru Podul JDBC-ODBC care ne permit să accesăm orice BD care este gestionat cu ODBC. Pentru MySQL, trebuie să descărcați și să instalăm SGBD și driverul, care pot fi obținute la adresa http://dev.mysql.com/doc/mysql/en/Java_Connector.html.Driverul postgre este obținut în http://jdbc.postgresql.org
Pentru a instala driverul, singurul lucru pe care ar trebui să-l facem pentru a anula fișierul JAR care îl conține în clasa. De exemplu, pentru MySQL:
export CLASSPATH=$CLASSPATH: /directorio-donde-este/mysql-connector-java-3.0.15-ga-bin.jar
Cu driverul instalat, îl putem încărca de la aplicarea noastră pur și simplu prin încărcarea dinamică a clasei la șofer:
Class.forName("com.mysql.jdbc.Driver");
Driverul JDBC-ODBC este încărcat după cum se arată mai jos:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
și în mod similar pentru postgres :
Class.forName("org.postgresql.Driver");
Sarcina șoferului trebuie făcută întotdeauna înainte de deconarea cu BD.
După cum am văzut anterior, pot exista diferite tipuri de derouri pentru aceeași bază de date. De exemplu, un BD pe MySqlpow pentru a accesa prin ODBC sau prin propriul său șofer. Am putea crede că soluția mai simplă de utilizat ODBC pentru toate conexiunile la SGBD. Cu toate acestea, în funcție de complexitatea aplicației Adsarrol, acest lucru ne poate oferi probleme. Operațiunile SGBDPermite determinate (tranzacții, îmbunătățirea performanței, o scădere etc.) care sunt reduse prin efectuarea conexiunii prin driverul ODBC. Acesta este motivul pentru care este preferabil să se folosească dedicer specific pentru SGBD în cauză.
Exemplul mai ușor de probleme în utilizarea driverelor este cu applet-urile. Când vom folosi accesul la bazele de date VIAJDBC dintr-un applet, trebuie să ținem cont de faptul că Appletse se execută pe mașina client, deci dacă BD este găzduit pe serverul nostru, va trebui să stabiliți o conexiune la distanță. Aici găsim că problema lui Quesi Appletul este vizibil de pe Internet, este foarte posibil ca Elpurto în care ascultați serverul de baze de date poate fi tăiat de un anumit firewall, astfel încât accesul din exterior nu ar fi posibil.
Utilizarea podului JDBC-ODBC nu este, de asemenea, recomandată în applet, deoarece necesită ca fiecare client să aibă sursa de date corespunzătoare configurată pe mașina lui. Acest lucru poate controla-o în Casod un Intranet, dar în cazul internetului va fi mai bine să utilizați alte metode pentru conexiune.
În ceea ce privește excepțiile, trebuie să capturam excepția SQLEXceptional aproape toate operațiunile în care este văzută implicată, obiectul JDBC.
Conectarea la BD
Odată ce driverul corespunzător este încărcat pentru SGBD, trebuie să stabilim conexiunea cu BD. Pentru aceasta vom folosi următoarea metodă:
Connection con = DriverManager.getConnection(url);Connection con = DriverManager.getConnection(url, login, password);
Conexiunea la BD este încapsulată într-un obiect de conectare. Pentru creația sa trebuie să furnizăm adresa URL a BDY, Dacă BD este protejat prin parolă, parola de conectare pentru ao accesa. Formatul urlvararyului în funcție de conducătorul auto pe care îl folosim. Cu toate acestea, toate adresele URL vor avea următorul mod general: JDBC: < subprotocol > 31363E7868 „> Nume >, cu subproturic care indică tipul de SGBD și cu numele numit BD și furnizând informații suplimentare pentru conexiune.
Pentru a vă conecta la o sursă ODBC de nume BD, de exemplu, vom folosi următoarea adresă URL:
Connection con = DriverManager.getConnection("jdbc:odbc:bd");
în cazul MySQL, dacă vrem să ne conectăm la un BD numit Bdalo pe mașina locală (localhost) și cu parola de migalizare a utilizatorului M ++ 24, vom fi în felul următor:
DIV id = „87C93FBD88”>
În cazul postgresului (notați că am indicat un port de deconnecare, 5432):
Connection con = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/bd", "miguel", "m++24");
Putem depana conexiunea și putem determina Ce numit JDBC. Pentru aceasta vom folosi un cuplu Demétodo care încorporează DriverManager. În cele ce urmează, se indică faptul că operațiunile care efectuează JDBC vor fi indicate prin ieșirea standard:
DriverManager.setLogWriter(new PrintWriter(System.out, true));
După ce acest apel poate fi afișat și folosind utilizarea utilizării :
DriverManager.println("Esto es un mensaje");