Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Alkalmazásfejlesztés gyakorlat

Hasonló előadás


Az előadások a következő témára: "Alkalmazásfejlesztés gyakorlat"— Előadás másolata:

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!


Letölteni ppt "Alkalmazásfejlesztés gyakorlat"

Hasonló előadás


Google Hirdetések