AdatbazisJava Programozas

Adatbázisok 3 – JDBC

Az előző cikkben megnéztük, hogy hogyan néz ki egy adatbázis kliens, hogyan néz ki a grafikus felülete, hogyan lehet definiálni táblákat, oszlopokat, sorokat. Ez valóban csak egy kliens, tehát minden műveletnél manuális beavatkozásra van szükség. Ez mamár azonban aligha elegendő, külső, automatizált, de mégis biztonságos hozzáférésre van szükség. Ma erre nézünk egy példát Java nyelven.

 

A Java beépítve támogat egy adatbázis kezelő könyvtárat, ez az úgynevezett JDBC. Ennek segítségével közvetlenül tudunk beszélgetni az adatbázissal, tudunk SQL utasításokat futtatni vagy akár menedzselni az adatbázist. Ez egy alacsony hatékonyságú könyvtár, ami azt jelenti, hogy nekünk kell direktben összeállítani a futtatni kívánt SQL utasításokat. Azonban az alapok megismeréséhez tökéletes és érthető. Több más olyan külső program épít a JDBC szolgáltatásaira, amelyek már jóval kényelmesebben használhatóak, ilyen például a Hibernate.

Rendben, tehát mivel a Java alapból tartalmazza a JDBC API-t, ezért nincs más teendőnk mint csinálni egy egyszerű Java Projectet. Ezt a szokásos módon tudjuk megtenni. Azonban ahhoz, hogy el tudjuk érni a PostgreSQL adatbázisunkat, kell nekünk egy Java nyelvből használható PostgreSQL API mindehhez. Szerencsére a PostgreSQL fejlesztői gondoltak ránk és el is készítették ezt az API-t. Ehhez nem kell mást tennünk mint, ellátogatni erre a weboldalra és letöltjük a legújabb verziót. Ez egy JAR file lesz, ami a Java ARchive rövidítése, tehát egy Java Project-et tartalmaz tulajdonképpen. Ezt kell hozzáadnunk a mi saját project-ünkhöz és már tényleg minden készen áll. Ezt így tudjuk megtenni:

Jobb gomb a Projekten ->Properties -> A keresőbe írjuk be, hogy „build” -> Java Build Path -> Add External JARs…

 

 

Most már sikeresen fel tudjuk építeni az adatbázis kapcsolatot a PostgreSQL rendszerével. Ezt a lépést amúgy mindegyik adatbázis klienssel meg kellene tennünk, szinte minden gyártónak van saját Java API-ja.

Az első adatbázis cikkben már bemutattam lépésről lépésre, hogy milyen utasításokat kell végrehajtani, hogyan épüljön fel egy megfelelő adatbázis kapcsolat. Röviden vegyük ezt át ismét:

1. Adatbázis kapcsolat felállítása
2. Adatbázis menedzselése / SQL utasítások futtatása
3. Adatbázis kapcsolat lezárása

 

Nézzük meg pontról – pontra, sorról – sorra, hogy hogyan is néz ki mindez a gyakorlatban:

 

1. Adatbázis kapcsolat felállítása

 

// Register JDBC driver
Class.forName(DBConnector.DB_DRIVER_NAME);

// Create DB Connection
DriverManager.getConnection(DBConnector.DB_URL, DBConnector.DB_USER, DBConnector.DB_PWD)

 

A paraméterként megadott értékeket külön már beállítottam, itt csak felhasználom ezeket. A definíciók a következők:

private static final String DB_DRIVER_NAME = org.postgresql.Driver.class.getName();
private static final String DB_URL = "jdbc:postgresql://localhost:5432/postgres";
private static final String DB_USER = "postgres";
private static final String DB_PWD = "xxxxxxx";

 

Ha a telepítés során az alapbeállításokat használtuk, akkor a jelszón kívül az összes érték felhasználható. A teljes példaprogram elérhető itt a blogon, érdemes lesz majd annak a felépítését, működését megnézni.

 

2. Adatbázis menedzselése / SQL utasítások futtatása

Sikeresen létrehoztuk tehát az adatbázis kapcsolatot. Most már bármilyen utasítás végrehajtására meg tudjuk kérni az adatbázist és annak eredményét fel tudjuk dolgozni. Nézzünk erre egy példát: Kérdezzük le az összes adatot a „Demo” Táblából:

 

// Prepare SQL Execution
Statement stmt = conn.createStatement();

// Prepare SQL Query
String sql = "SELECT * FROM " + DBConnector.getDemoTableName();// Execute
ResultSet rs = stmt.executeQuery(sql);

// Iterate over the result
while(rs.next()){

// Column ID
int id = rs.getInt("ID");

// Column FirstName
String firstname = rs.getString("FirstName");

// Column SurName
String lastname = rs.getString("SurName");

// Print the current row
System.out.println(id + ": " + firstname + " " + lastname);

}

Ettől kezdve a lehetőségeink megnőnek. Jól látható, hogy valódi SQL utasításokat kell összeraknunk, majd ezt fogja a JDBC API továbbítani az adatbázisnak. Hiába vagyunk tehát Java nyelvben, ugyanúgy az SQL utasítások adják a program lelkét.
Ez praktikusan azt jelenti, hogy bármilyen SQL utasítást végre tudunk hajtatni kívülről az adatbázissal ami szintaktikailag helyes. Ez egyrészről rengeteg extra lehetőség, másrészről veszélyes is lehet ha nem vagyunk elég körültekintőek. Kiváltképp az írási utasításokkal (INSERT, DELETE) kell vigyázni!

 

Nézzünk meg egy másik példát, szúrjunk be egy új BirthYear" nevű oszlopot a meglévő „Demo” táblába és definiáljunk neki egy alapértéket (1990):

 

// Prepare SQL Execution
Statement stmt = conn.createStatement();

// Prepare SQL Query
String sql = "ALTER TABLE " + DBConnector.getDemoTableName() + " ADD BirthYear integer DEFAULT 1990";// Execute
stmt.executeQuery(sql);

 

A teljes SQL utasításkészletet eléritek ezen a linken. Ezeknek a segítségével már össze tudjátok tenni a szükséges query-t és Java-ból tudjátok őket futtatni.

 

3. Adatbázis kapcsolat lezárása

Az utolsó lépés nem más mint a meglévő kapcsolatok lezárása. Ez analóg módon történik, mintha egy fájlt nyitottunk volna meg. Ökölszabály a külső kapcsolatok használata esetén, hogy a megnyitott kapcsolatokat mindig le is kell zárni! Ennek számos oka van, talán a legegyszerűbb azt elképzelni, hogyha valakinél már van egy nyitott kapcsolat, akkor addig más nem tud ilyen kapcsolatot létrehozni például. Ha véletlen a kapcsolat nyitva marad, akkor addig másokat feltartunk. Íme:

 

// Close the ResultSet
rs.close();

// Close the Statement
stmt.close();// Close the DB Connection
conn.close();

Ezek azok az alapvető utasítások, feladatok, amiket el kell végezni ahhoz, hogy létrejöjjön egy sikeres adatbázis kapcsolat. Ennek segítségével beszélni tudunk az adatbázissal és feladatokat tudunk vele végrehajtatni.

 

 

Remélem sikerült adnom egy átfogó képet az adatbázisok működéséről, működtetéséről és most már van egy tisztább képünk arról, hogy hogyan is épül fel egy ilyen folyamat. A teljes példa programot innen le tudjátok tölteni.

Bajor Tamás - Programozz Te Is!

Hello, Bajor Tamás vagyok, a Programozz Te Is oldal alapítója és oktatója. Kösz, hogy itt vagy és éppen az én cikkem olvasására fordítod a drága idődet! Azért dolgozom minden nap, hogy neked segítsek a programozás világában minél profibban elmélyülni. A cikkek egyetlen írójaként rengeteg munkát és energiát fektetek mind az oldalba, mind pedig az oktatásba!

 

Arra kérlek, ha tetszett cikk amit olvastál vagy szívesen veszed az ingyenes anyagokat akkor dobj egy Like-ot a Facebook-on, ezzel is támogatva a munkámat. Ez egy apró kattintás neked, de hatalmas segítség nekem!