JDBC

 

Java Database Connectivity (JDBC) je biblioteka klasa koja se koristi za povezivanje na različite relacione baze iz Java koda. Aplikacije koje rade sa bazama su obično pisane kao tzv. klijent-server aplikacije, koje povezuju korisnika informacija sa onim ko te informacija pruža.

 

Glavni problem u radu sa bazama jeste veliki broj formata koji se koriste, pri čemu svaki od njih ima svoj način čuvanja i pristupanja podacima. Postojanje standardnog jezika za postavljanje upita nad podacima (SQL) znatno olakšava rad sa relacionim bazama. JDBC podržava SQL, što omogućava da koristite veliki broj različitih formata baza bez potrebe da znate strukturu same baze.

JDBC biblioteka sadrži klase za sve uobičajene operacije nad bazama kao što su uspostavljanje veze sa bazom, kreiranje i izvršavanje SQL naredbe i  obrada rezultata. Sve klase JDBC biblioteke se nalaze u paketima java.sql i javax.sql.

 

 

Drajveri baze

 

Java programi koji koriste JDBC ne moraju da vode računa o formatu baze kojoj pristupaju, kao ni o plaformi na kojoj je ta baza kreirana. Ovu nezavisnost od baze i platforme omogućuju drajver menadžeri. Oni vode računa o drajverima neophodnim za pristupanje slogovima baze, i sve klase JDBC-a se oslanjaju na njih. Za svaki format baze potrebno je da koristite i odgovarajući drajver.

 

JDBC drajveri baze mogu biti napisani u potpunosti u Javi ili implementirani koristeći neke druge metode kako bi se povezala Java aplikacija sa postojećim bibliotekama za pristup bazi. JDBC takođe uključuje i drajver koji premošćava JDBC i ODBC.

 

ODBC je uobičajeni Microsoft-ov interfejs za pristupanje relacionim bazama. Pristupa mu se preko ODBC Data Source administratora. Ovaj administrator dodaje ODBC drajvere i konfiguriše ih da rade sa određenom bazom.

 

Na slici vidite ODBC Data Source administrator. U okviru njega su izlistani svi drajveri koji se nalaze na sistemu.

 

 

JDBC-ODBC veza omogućava JDBC drajverima da se koriste kao ODBC drajveri tako što konvertuje pozive JDBC metoda u pozive ODBC funkcija.

Korišćenje ove veze zahteva postojanje odgovarajućeg drajvera veze (sun.jdbc.odbc.JdbcOdbcDriver), odgovarajućeg ODBC drajvera i ODBC izvora podataka (baze) kome je dodeljen drajver.

 

ODBC drajver možete da dodelite nekoj bazi pomoću ODBC Data Source administratora. Tom prilikom se bazi dodeljuje i neko deskriptivno ime. Ovo ime se kasnije koristi unutar Jave kada se uspostavlja konekcija.

 

 

Povezivanje na bazu i rad sa podacima

 

Pristup bazi i učitavanje i manipulisanje podacima u Java programima odvija se u nekoliko koraka:

 

-         učitavanje JDBC drajvera

-         uspostavljanje veze sa bazom

-         kreiranje naredbe

-         izvršavanje SQL upita

-         manipulisanje dobijenim podacima

 

 

Učitavanje JDBC drajvera

Drajver se učitava pomoću metoda Class.forName(). Klasa Class, koja je deo paketa java.lang, se između ostalog koristi za učitavanje klasa u Java interpreter. Njen metod forName() učitava određenu klasu. Dakle, da biste učitali JDBC drajver koristite sledeću naredbu

 

         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

 

Uspostavljanje veze sa bazom

Kada ste učitali drajver, možete da uspostavite konekciju sa bazom korišćenjem DriverManager klase unutar java.sql paketa. Unutar ove klase definisan je metod getConnection() pomoću koga se uspostavlja veza sa odgovarajućom bazom. Ovaj metod ima tri argumenta tipa String:

-         ime baze i tip konekcije (kada koristite JDBC-ODBC vezu, imenu baze prethodi tekst jdbc:odbc: koji indikuje tip konekcije)

-         korisničko ime

-         šifra za pristup

 

Korisničko ime i šifra nisu uvek neophodni. Ukoliko baza nije zaštićena na ovaj način, ove argumente ne morate da prosledite.

Metod getConnection() nakon izvršavanja vraća objekat tipa Connection, koji predstavlja aktivnu konekciju sa bazom.

 

Imajući sve ovo u vidu, naredba pomoću koje uspostavljate konekciju sa bazom bi izgledala ovako:

 

         Connection con = DriverManager.getConnection("jdbc:odbc:ucenik");

 

Metod getConnection(), kao i ostali metodi koji rade sa bazama proizvode izuzetke tipa SQLException, ukoliko dođe do nekih nepredviđenih situacija. Sam SQL ima svoje poruke o grešci i ove poruke se prosleđuju kao deo SQLEixception objekta.

Nakon završetka rada, potrebno je da zatvorite konekciju pomoću metoda close().

Kreiranje naredbe

Unutar Jave, SQL naredbe su predstavljene objektima tipa Statement. Statement je interfejs, pa ove objekte ne možete da kreirate direktno. Umesto toga, koristite metod createStatement() klase Connection. Na primer,

 

         Statement naredba = con.createStatement();

 

Izvršavanje SQL upita

Kada ste kreirali objekat klase Statement, pomoću njegovog metoda executeQuery() možete da izvršite neki SQL upit. Na primer,

 

         String sql = "SELECT * FROM Ucenik";

         naredba.executeQuery(sql);

 

Neke od SQL naredbi (SELECT upiti) nakon izvršavanja vraćaju neki rezultujuči skup slogova. Metod executeQuery() ove podatke smešta u objekat tipa ResultSet. Tada ćete koristiti sledeću sintaksu

 

         ResultSet rezultat = naredba.executeQuery(sql);

 

Manipulisanje podacima

ResultSet objekat sadrži kursor koji pokazuje na tekući slog podataka. Inicijalno ovaj kursor je postavljen ispred prvog sloga. Podrazumevani objekat tipa ResultSet ima kursor koji može da se pomera samo unapred i kreiran je samo za čitanje (podaci unutar njega ne mogu da se menjaju). Međutim, unutar interfejsa ResultSet su definisane konstante koje možete da koristite prilikom kreiranja naredbe, kako biste dobili rezultujući skup sa nekim drugim osobinama.

 

Na primer,

 

         Statement naredba = con.createStatement(

                   ResultSet.TYPE_SCROLL_INSENSITIVE,

                  ResultSet.CONCUR_UPDATABLE);

         ResultSet rezultat = naredba.executeQuery("SELECT Ime FROM Ucenik");

 

će kreirati objekat tipa ResultSet čije podatke možete da menjate i čiji kursor može da se pomera proizvoljno, ali ne vidi promene načinjene od strane drugih korisnika.

 

Kada je kursor pozicioniran na nekom slogu, na raspolaganju vam je nekoliko metoda pomoću kojih možete da pročitate podatke (getDate(), getDouble(), getFloat(), getInt() itd.). Svaki od ovih metoda ima jedan argument tipa String ili int, koji predstavlja naziv kolone ili njen redni broj. Koji od ovih metoda ćete koristiti, zavisi od tipa podataka smeštenih u odgovarajućoj koloni. Na primer,

 

         String imeUcenika = rezultat.getString("Ime");

 

Kada ste pročitali podatke iz jednog reda, potrebno je da pomerite kursor na neki drugi red, kako biste nastavili sa čitanjem podataka. Pomeranje kursora se vrši pomoću jednog od sledećih metoda:

 

-         afterLast() – pomera kursor odmah nakon poslednjeg sloga u skupu

-         afterFirst() – pomera kursor na početak, odmah ispred prvog sloga

-         first() – pomera kursor na prvi slog

-         last() – pomera kursor na poslednji slog

-         next() – pomera kursor na sledeči slog

previous() – pomera kursor na prethodni slog
Dodaj komentar Sviđa mi se - (2) Ne sviđa mi se - (0)    

  • Rad sa bazama podataka pomoću JDBC-a 1
  • Rad sa bazama podataka pomoću JDBC-a 2
  • Rad sa bazama podataka pomoću JDBC-a 3