Jelenlegi hely

23.2.2 SQL parancs végrehajtása

Az executeUpdate metódust használtuk, mert az createTableCoffees nevű SQL utasítás egy DDL (data definiton language) utasítás. Azok a parancsok, amelyek létrehoznak, módosítanak, törölnek táblát, mind DLL utasítások és az executeUpdate metódussal hajthatók végre. Amint az a nevéből kitűnik, az executeUpdate metódus rekordok értékeinek módosítására is szolgál. Ez sokkal gyakoribb, mivel rekord módosítása többször is történhet, amíg egy tábla létrehozása csak egyszer.

A leggyakrabban használt SQL utasítást végrehajtó parancs az executeQuery. Ez a metódus használandó egy SELECT lekérdezés végrehajtásához, ami a leggyakoribb SQL utasítás.

Adatbevitel egy táblába

Megmutattuk, hogyan kell létrehozni a COFFEES nevű táblát, megadva a mezők nevét és típusát, de ez csak a tábla szerkezetét állítja be. A tábla még nem tartalmaz egyetlen adatot sem. Soronként visszük be az adatokat a táblába, megadva az egyes mezők értékét.

Megjegyezés: A beillesztendő értékeket ugyanabban a sorrendben kell megadni, mint ahogy azt deklaráltuk a tábla létrehozásakor.

A következő kód egy rekordot illeszt be: Colombian a COF_NAME oszlopba, 101 a SUP_ID oszlopba, 7.99 a PRICE, 0 a SALES és 0 a TOTAL oszlopba. (Amióta a Coffee Break működik, a heti eladási mennyiség és az eddigi összmennyiség az összes kávéfajtánál 0-val indul.) Csakúgy mint a COFFEES tábla létrehozásánál tettük, egy Statement objektumot hozunk létre, majd az executeUpdate metódust használjuk.

Mivel az SQL utasítás nem fér el egy sorba, két String-et fogunk pluszjellel összefűzni. Érdemes figyelni a szükséges szóközökre a COFFEES és a VALUES szó között. A szóköznek az aposztrófok között kell lennie vagy a COFFEES szó mögött, vagy a VALUES szó előtt; a szóköz nélkül az SQL utasítás hibásan INSERT INTO COFFEESVALUES...–nek fogja olvasni, és a DBMS a COFFEESVALUES nevű táblát fogja keresni. Szintén oda kell figyelni, hogy egyszeres idézőjelet használunk a kávé nevének megadásakor, mert az két dupla aposztróf közé van beágyazva. A legtöbb adatbázis-kezelőnél általános szabály, hogy szabadon választható, melyik aposztrófot használjuk.

Statement stmt = con.createStatement();
stmt.executeUpdate(
    "INSERT INTO COFFEES " +
    "VALUES ('Colombian', 101, 7.99, 0, 0)");

Az INSERT utasítás második sora fogja beilleszteni a rekordot a COFFEES táblába. Használjuk fel inkább újra az stmt nevű Statement objektumot, mint újat példányosítsunk minden végrehajtásnál.

stmt.executeUpdate("INSERT INTO COFFEES " +
    "VALUES ('French_Roast', 49, 8.99, 0, 0)");

A további sorokat az alábbiak szerint illesztjük be:

stmt.executeUpdate("INSERT INTO COFFEES " +
    "VALUES ('Espresso', 150, 9.99, 0, 0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
    "VALUES ('Colombian_Decaf', 101, 8.99, 0, 0)");
stmt.executeUpdate("INSERT INTO COFFEES " +
    "VALUES ('French_Roast_Decaf', 49, 9.99, 0, 0)");

Adatok kinyerése a táblából

Most, hogy a COFFEES táblában már adatok is vannak, megírhatjuk a SELECT utasítást az adatok kinyeréséhez. A következő kódban a csillag (*) mondja meg, hogy az összes oszlopot akarjuk kiválasztani. Miután nincs WHERE feltétellel meghatározva, hogy mely rekordokat adja vissza, a következő SQL utasítás az összes sort vissza fogja adni.

SELECT * FROM COFFEES

Az eredmény megegyezik azzal, amit az a kimenet ad, amikor az SQL lekérdezést direkt az adatbázis-kezelőnek adjuk meg. Amikor egy Java alkalmazáson keresztül érjük el az adatbázist, vissza kell, hogy nyerjük az adatokat, hogy felhasználhassuk. A következő részben ezt mutatjuk be.

Egy másik példa a SELECT utasításra, amelyik visszaadja a kávék listáját és az árat.
SELECT COF_NAME, PRICE FROM COFFEES

A lekérdezés eredménye a következő:

A fenti SELECT utasítás visszaadta az összes rekordot, a következő pedig csak azokat, amelyek kevesebbe kerülnek, mint $9.00

SELECT COF_NAME, PRICE
FROM COFFEES
WHERE PRICE < 9.00