20
A Java programozási nyelv Soós Sándor 1/20 Java programozási nyelv 11. rész – Adatbázis- programozás Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember

Java programozási nyelv 11 . rész – Adatbázis-programozás

Embed Size (px)

DESCRIPTION

Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember. Java programozási nyelv 11 . rész – Adatbázis-programozás. Tartalomjegyzék. Adatbázis programozás Java-ban JDBC Két- és háromrétegű adatbázis-elérési modell JDBC-ODBC kapcsolat - PowerPoint PPT Presentation

Citation preview

Page 1: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 1/20

Java programozási nyelv11. rész – Adatbázis-programozás

Nyugat-Magyarországi EgyetemFaipari Mérnöki KarInformatikai Intézet

Soós Sándor2005. szeptember

Page 2: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 2/20

Tartalomjegyzék

● Adatbázis programozás Java-ban● JDBC● Két- és háromrétegű adatbázis-elérési modell● JDBC-ODBC kapcsolat● Adatbázis URL● Hibakezelés● SQL utasítások végrehajtása● Az SQL utasítás eredményének feldolgozása● Az SQL kurzor mozgatása● Az aktuális sor feldolgozása● Adatforrás definiálása

Page 3: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 3/20

Adatbázis programozás Java-ban

● A JDBC fogalma:– programozói interface (API) SQL (Structured Query

Language) utasítások végrehajtására– bár a JDBC önálló márkanév, mégis szokás Java

DataBase Connectivity-nek is nevezni (Java Adatbázis Összeköttetés)

● Mit jelent az API?– Application Programming Interface– Alkalmazás Programozási Interfész– Programozók számára készített eszközkészlet, könyvtár

valamilyen feladatot megoldó programok készítésére– Pl. Windows API

Page 4: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 4/20

JDBC

● A JDBC API szolgáltatásai– Összekapcsolódás a relációs adatbázissal– SQL utasítások végrehajtása– SQL lekérdezések eredményeinek feldolgozása

● A JDBC két szintje:– JDBC alap (Core) API: java.sql csomag

● az adatbázisok eléréséhez szükséges alapvető osztályok– JDBC standard kiterjesztés (Extension) API: javax.sql

● további haladó szintű osztályok, pl. Java Tranzakció API (JTA)● A JDBC alkalmazásával a programjaink nemcsak

platformfüggetlenek, hanem adatbáziskezelő függetlenek is lehetnek.

Page 5: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 5/20

Két- és háromrétegű adatbázis-elérési modell

● Kétrétegű modell:– Java program– Adatbázis

● Háromrétegű modell:– Java program– Szolgáltató réteg– Adatbázis

● A két, illetve három réteg 1, 2, vagy akár 3 gépen is elhelyezkedhet. A Java mindkét megoldást támogatja.

● Akár a Szolgáltató réteg is megírható Java-ban.

Page 6: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 6/20

JDBC meghajtó programok (Driver)

● A JDBC API és a különböző adatbáziskezelő programok közötti kommunikációt a különböző meghajtó programok biztosítják.

● Ezeket külön-külön megírják az adatbáziskezelő programok készítői.

● A szükséges meghajtót, vagy meghajtókat regisztráljuk a JDBC alá, ettől kezdve a programunk képes kommunikálni az adott adatbáziskezelővel.

Page 7: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 7/20

JDBC-ODBC kapcsolat

● ODBC – Open Database Connectivity– A legelterjedtebb adatbázis-hozzáférési API– platformfüggő– a Windows 2000 és XP is támogatja– nem objektumorientált

● A JDBC-hez létezik ODBC meghajtó, aminek segítségével használható minden ODBC meghajtóval rendelkező adatbázis.– a driver neve: sun.jdbc.odbc.JdbcOdbcDriver– ezt fogjuk regisztrálni.

Page 8: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 8/20

Kapcsolattartás az adatbázissal

● A program és az adatbázis közötti kapcsolatot a Connection osztály reprezentálja.

● Egy program több adatbázissal is kapcsolatot tarthat egy időben. Ehhez egy-egy példányt kell létrehoznunk a Connection osztályból.

● Egy Connection típusú objektum a kiadott SQL utasításokat és azok eredményeit tartalmazza.

Page 9: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 9/20

Adatbázis URL

● Az elérni kívánt adatbázist az Internetről ismert URL technikával adjuk meg.

● Az URL tartalmazza: – a használandó protokollt– az adatbázis azonosítóját– esetleges további paramétereket, pl. login név, jelszó

● Egy ODBC adatforrás eléréséhez a következő URL-t használjuk:– jdbc:odbc:<ODBC adatforrás neve>– Például: jdbc:odbc:Cimek

Page 10: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 10/20

Kapcsolat felvétel az adatbázissal

● Betöltjük, vagy a DriverManager-rel betöltetjük a szükséges adatbázis meghajtót.

● A DriverManager-től "elkérjük" a kívánt adatkapcsolatot megadva neki az adatbázis URL-t.

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection con =

DriverManager.getConnection( "jdbc:odbc:Cimek","login név","jelszó" );

Page 11: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 11/20

Hibakezelés

● Ha adatbáziskezelés során valamilyen hiba lép fel, akkor egy SQLException kerül kiváltásra.

● A hiba szövegét a getMessage metódussal kaphatjuk meg.

Page 12: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 12/20

SQL utasítások végrehajtása

● Erre szolgál a Statement interface.● A fennálló kapcsolatot reprezentáló Connection

objektum createStatement metódusával létrehozunk egy utasítás objektumot. Ezzel még nem határoztuk meg a végrehajtandó SQL utasítást. Ezt három metódussal tehetjük meg:– executeQuery: Eredménytáblát visszaadó utasítások

futtatására (SELECT)– executeUpdate: adatmanipulációs (INSERT, UPDATE,

DELETE) és adatdefiníciós (CREATE/DROP TABLE) utasítások futtatására

– execute: mindkét típus végrehajtására alkalmas

Page 13: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 13/20

Az SQL utasítás eredményének feldolgozása

● Egy SQL utasításnak többféle eredménye lehet, ezért nem lehet egyszerűen a metódus által visszaadott értékben visszaadni.

● A Statement különböző metódusai segítenek:– getUpdateCount(): a megváltozott sorok száma. Ezt

adja vissza az ExecuteUpdate metódus is. – getResultSet(): az eredménytábla. Ezt adja vissza az

ExecuteQuery metódus is.– getMoreResults(): a következő eredménykomponens

feldolgozása● Nézzük meg a DBResult.java fájlt!

Page 14: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 14/20

Az eredménytábla feldolgozása

● Egy SQL lekérdezés eredménye mindig egy eredménytábla (ResultSet) objektum.

● Az eredménytábla méretét nem lehet előre meghatározni, ezért pufferelve kapjuk meg.

● A pufferből is egyszerre egy sort látunk, erre mutat az SQL kurzor.

● Kezdetben az első sor elé mutat az SQL kurzor.● Az SQL kurzor mozgatására különböző

lehetőségeink vannak.

Page 15: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 15/20

Az SQL kurzor mozgatása

● next(): a következő sorra lép. Hamisat ad vissza, ha nincs több sor● previous(): az előző sorra lép. Hamisat ad vissza, ha nincs több

sor● last(): az utolsó sorra lép. Hamisat ad vissza, ha üres az

eredménytábla● first(): az első sorra lép. Hamisat ad vissza, ha üres volt az

eredménytábla● afterlast(): az utolsó sor utánra lép● beforefirst(): az első sor elé lép● absolute(): az adott sorszámú sorra lép. Ha negatív a szám, akkor

hátulról számol.● relative(): relatívan mozgatja a kurzort

– Az eredménytábla típusa befolyásolja, hogy mely léptetések használhatók.

– A sorok számozása 1-el kezdődik!

Page 16: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 16/20

Az aktuális sor feldolgozása

● Az aktuális sor adatainak lekérdezése: getMetaData()● Ez a metódus visszaad egy ResultSetMetaData

interface-t. Ennek metódusai adják vissza a különböző jellemzőket. Lásd a dokumentációban!

● Például a getColumnCount() adja meg az oszlopok számát.

● Az egyes adatmezőket getTípus() formájú metódusokkal lehet lekérdezni paraméterként megadva az oszlop sorszámát. Az oszlopokat 1-től számozzuk.– Például: getString(1), getInt(3), stb.

Page 17: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 17/20

Az aktuális sor módosítása

● Módosítható eredménytábla esetén updateTípus() formájú metódusokkal lehet módosítani a mezők tartalmát.

● Ezután az updateRow() metódussal kell véglegesíteni a módosításokat.

● A deleteRow() metódussal lehet törölni az aktuális sort

Page 18: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 18/20

Új sor beszúrása

● Új sor beszúrása a beszúrási puffer segítségével lehetséges.

● A moveToInsertRow() metódussal érhetjük el a beszúrási puffert.

● Ezután az előbbi updateTípus() metódusokkal lehet beállítani a mezőket, majd az insertRow() metódussal véglegesítjük a beszúrást.

● A moveToCurrentRow() metódussal térhetünk vissza a beszúrás előtti aktuális sorra, vagy valamelyik abszolút léptető utasítással bármelyikre.

Page 19: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 19/20

Adatforrás definiálása

● Adatforrás létrehozása Windows 2000-ben:– Vezérlőpult– Felügyeleti eszközök– Adatforrások (ODBC)– Add (Hozzáadás)– Microsoft Access Driver (*.mdb) – Befejezés gomb– Adatforrás neve: xy– Kiválasztás gomb– Speciális gomb

● Felhasználónév● Jelszó

– OK gomb

Page 20: Java programozási nyelv 11 . rész – Adatbázis-programozás

A Java programozási nyelv Soós Sándor 20/20

Példa

● Nézzük meg a DBTanulok.java fájlt!