Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Alkalmazásfejlesztés gyakorlat
Java GUI - DB
2
JDBC osztálykönyvtár (java.sql csomag)
Oracle Driver MSSQL Driver PostgreSQL Driver SQLite Driver Oracle DB Sqlite fájl MSSQL Postgres Application
3
JDBC Főbb osztályok java.sql.Connection – adatbázis-kapcsolat reprezentálására java.sql.Statement – egyszerű SQL-utasításokhoz java.sql.PreparedStatement – paraméteres SQL-lekérdezésekhez optimalizálva: Nem a teljes lekérdezés szövege változik, hanem csak egyes paramétereké Az egyszer már kiértékelt lekérdezést nem kell újra kiértékelni, csak a paramétereket kell megváltoztatni Véd SQL injection ellen
4
JDBC Főbb osztályok Lezárás
java.sql.ResultSet – lekérdezések eredményeinek bejárására: Egyszerre mindig egy sort tudunk elérni getString(), getInt(), getDate(), stb. metódusok – aktuális sor adott mezőjét adják vissza next() metódus lépteti Lezárás JDBC objektumokat le kell zárni (close) finally-ben, mindegyiket külön try-catch-ben
5
SQLite adatbázis http://www.sqlite.org/
Hordozható, szerver indítása nélkül használható Hiányosságok: Egyik SQL megvalósítás sem követi a szabványt Előnyökkel is rendelkezik: sqlite3 parancssori eszköz, sqlite3 shell .read filename – parancsok végrehajtása fájlból .tables – táblák listázása .schema tablename – tábla sémája .exit – kilépés .help – Help
6
bookshop.db Inicializáljuk az adatbázist! cmd cd kulso\db
sqlite3 bookshop.db Ha már létezik a fájl/adatbázis akkor azt megnyitja Ha nem létrehoz egy üres fájlt/adatbázist Hozzuk létre a táblákat .read bookshop.ddl Kérdezzük le milyen táblák léteznek .tables Kérdezzük le a Customer tábla sémáját! .schema Customer A shellt hagyjuk meg későbbi használatra
7
07-java-GUI-DB Készítsük el az alkalmazás disztribúcióját!
cmd env.bat cd feladat\07-java-GUI-DB ant cd dist run.bat (MEGVÁLTOZOTT!!! és a Manifest is) Lépjünk ki, majd indítsuk újra A felvett Customerek adatai megmaradnak Nem memóriában, hanem adatbázisban tárolódtak el
8
07-java-GUI-DB Eclipse Lásd: 01-02_kiegeszites alatti doc file
A futtatáshoz a ‚BookShopDB” környezeti változó megfelelő beállítása kell Futtatási konfiguráció Environment fül Új környezeti változó beállítása
9
07-java-GUI-DB Nézzük át a megváltozott forrásokat!
BookShopController – getCustomers metódus Összeköti a GUIban a Customerek listázását a DAOval BookShopDAO Teljes osztály megváltozott, olvassuk át a megjegyzéseket!
10
07-java-GUI-DB Debuggoljuk a BookShopDAOTest.java-t
TestAddAndListCustomers metódus: TestCustomer nevű Customereket veszünk fel Majd a lekérdezzük őket Futassuk le többször a debugot Közben figyeljük az adatbázis tartalmát a korábban nyitott SQLite shellben SELECT * FROM Customers; Figyelem: Sikeres teszthez új futtatás előtt törölni kell az adatbázist a UNIQUE constraint miatt
11
07-java-GUI-DB Debuggoljuk a BookShopDAOTest.java-t
TestAddCustomerWithSameName metódus A DAOImpl hibát jelez a futás során De az nem valódi hiba, a DAO művelet sikertelen, de ezt is várjuk el tőle (azonos nevű customer nem rögzíthető)
12
Feladat Book/Buy Book funkcionalitás
Adatbázisban rögzítsük az új könyveket Implementáljuk a könyv tárolást BookShopDAOImpl.addBook metódus implementálása Induljunk ki az addCustomer metódusból Könyv tárolás tesztelése BookShopDAOImpl-be vegyünk fel egy testBuyBook metódust! Hívjuk ezt is a mainből! Induljunk ki a testAddCustomer metódusból! Teszteljük az új metódust! (lásd: előző dia)
13
Feladat/Házi Az előző órai házi feladatban elkészített GUI-ra kössük rá a Controller-en keresztül az adatbázist Book/Buy Book (előző feladattal megvan) Book/List Books Ezt tegyük meg a Sell alatti funkciókra is!
14
Házi feladat Tranzakció Mi a tranzakció négy követelménye?
Írjunk egy olyan metódust, amivel egyszerre több Customert tudunk az adatbázishoz hozzáadni, de fontos, hogy vagy mindet hozzáadjuk, vagy egyet se! Alkalmazzunk tranzakció kezelést! Lásd: tutorial zipben a basics/transactions.html)
15
Házi feladat JDBC tranzakció
try { conn.setAutoCommit(false) conn.setTransactionIsolation(…) … conn.commit(); } catch(Exception e) { conn.rollback(); }
16
Házi feladat JDBC tranzakció
Próbáljuk ki tranzakcióval és anélkül a metódust! Figyeljük az adatbázis tartalmát debuggolás közben: Ha tranzakcióval dolgozunk, akkor csak a conn.commit-kor jelenik meg az összes Customer. Ha anélkül, akkor minden egyes executeUpdate hívás után!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.