|
|
|
Modelul clasic de baza de date este cel relational, în care datele sunt memorate în tabele. Pe lânga tabele, o baza de date mai poate contine: proceduri si functii, utilizatori si grupuri de utilizatori, tipuri de date, obiecte, etc.
Dintre producatorii cei mai importanti de baze de date amintim Oracle, Sybase, IBM, Informix, Microsoft, etc.
Folosind JDBC este usor sa transmitem secvente SQL catre baze de date relationale. Cu alte cuvinte, nu este necesar sa scriem un program pentru a accesa o baza de date Oracle, alt program pentru a accesa o baza de date Sybase si asa mai departe. Este de ajuns sa scriem un singur program folosind API-ul JDBC si acesta va fi capabil sa trimita secvente SQL bazei de date dorite. Bineînteles, scriind codul sursa în Java, ne este asigurata portabilitatea programului. Deci, iata doua motive puternice care fac combinatia Java - JDBC demna de luat în seama.
Fiind robust, sigur, usor de folosit, usor de înteles, Java este un excelent limbaj pentru a dezvolta aplicatii de baze de date. Tot ceea ce-i lipseste este modalitatea prin care aplicatiile Java pot comunica cu bazele de date. Aici vine însa JDBC-ul care ofera acest mecanism.
1. DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
2. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
3. System.setProperty("jdbc.drivers", "sun.jdbc.odbc.JdbcOdbcDriver");
4. java -Djdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver
Câmpul sub-protocol denumeste tipul de driver ce trebuie folosit pentru realizarea conexiunii si poate fi odbc, oracle, sybase, db2 si asa mai departe. Identificatorul bazei de date este un indicator specific fiecarui driver care specifica baza de date cu care aplicatia doreste sa interactioneze. In functie de tipul driver-ului acest identificator poate include numele unei masini gazda, un numar de port, numele unui fisier sau al unui director, etc.
jdbc:odbc:testdb jdbc:oracle:thin@persistentjava.com:1521:testdb jdbc:sybase:testdb jdbc:db2:testdb
La primirea unui JDBC URL, DriverManager-ul va parcurge lista driver-elor înregistrate în memorie, pâna când unul dintre ele va recunoaste URL-ul respectiv. Daca nu exista nici unul potrivit, atunci va fi lansata o exceptie de tipul SQLException, cu mesajul no suitable driver.
Connection c = DriverManager.getConnection(url); Connection c = DriverManager.getConnection(url, username, password); Connection c = DriverManager.getConnection(url, dbproperies);O conexiune va fi folosita pentru:
Connection c = DriverManager.getConnection(url);
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT * FROM un_tabel ORDER BY o_coloana");
s.executeUpdate("DELETE * FROM un_tabel");
Metoda executeQuery trimite interogari SQL catre baza de date si primeste rasuns
într-un obiect de tip ResultSet.
String query = "SELECT cod, nume FROM localitati ORDER BY nume";
ResultSet r = s.executeQuery( query );
while (r.next()) {
System.out.println (
r.getString ("cod") + "," +
r.getString ("nume") );
ResultSet r = s.executeQuery(" SELECT * FROM localitati" );
ResultSetMetaData rsmd = r.getMetaData();
System.out.println("Coloane: " + rsmd.getColumnCount());
import java.sql.*;
import java.io.*;
public class TestJDBC {
public static void main (String[] args) {
String dbUrl = "jdbc:odbc:test";
String user = "dba";
String password = "sql";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Eroare incarcare driver!\n" + e);
}
try{
Connection c=DriverManager.getConnection(dbUrl, user, password);
Statement s= c.createStatement();
ResultSet r =
s.executeQuery(
" SELECT cod, nume FROM localitati"+
" ORDER BY nume");
while (r.next()) {
System.out.println (
r.getString ("cod") + "," +
r.getString ("nume") );
}
s.close();
}
catch(SQLException e) {
e.printStackTrace();
}
}
}
|
|
|