C# - Adatbevitel tömb-adattípussal rendelkező oszlopokba

Oracle adatbázis-kezelés 9. rész

forráskód letöltése
Sorozatunk múlt heti számában áttekintettük, milyen módon hozhatunk létre tömb-típusokat, és hogyan használhatjuk fel őket adataink tárolására. A múlt részben eljutottunk addig, hogyan adhatunk ki SELECT utasítást az ilyen típusú oszlopokra, mai cikkünkben bemutatjuk, hogyan szúrhatunk be rekordokat az említett típussal rendelkező oszlopainkba, illetve hogyan frissíthetjük a már létezőket.
A példaprogram használata előtt létre kell hozni egy SOUSER sémát az Oracle adatbázis-rendszerünkben, és fel kell ruházni DBA jogosultsággal. A sémába bejelentkezve le kell viszont futtatni a mellékelt Oracle09.sql nevű parancsállományt a hivatkozott további objektumok létrehozásához.
A mellékelt példában erősen építünk a múlt részben létrehozott funkcióinkra, melyekben az adattároló objektumaink ezen típussal kapcsolatos hátrányait kiküszöbölendő, magunk állítottuk össze a lekérdezett adathalmaz alapján a megjelenő táblázatokat.
Erre azért volt szükség, mert az adatbázist elérő komponenseink nem tudták értelmezni a létrehozott típusokat, így kezelni sem tudták az ilyen típusú adatokat rejtő oszlopok értékeit. Ennek ellenére nem kellett lemondanunk a tömb-típusú oszlopok használatáról.
A példaalkalmazás felületére helyezett TabControl vezérlő ’Lekérdezés’ feliratú füle alatt megtaláljuk az előző számunkban megalkotott adatlekérdező logikát, melyet kiegészítettünk az adatok bevitelét lehetővé tevő funkciókkal. Ezeket az ’Adatbevitel’ fül alatt találjuk meg. Az előbbi műveletekkel ellenőrizhetjük az adatbevitel helyességét.
A lekérdező funkciókkal egyszerűen megnézhetjük a ’Passangers’ tábla ’PassList’ oszlopában megtalálható neveket, ha a ’Lekérdezés’ fül alatti felső DataGrid kontrolban a megfelelő rekordra kattintunk. Ekkor a nevek megjelennek az alsó táblázatban.
Az adatbevitel most is kicsit komplikált, az SQL-parancsot megint csak nekünk kell összeállítanunk a rendelkezésre álló adatok alapján.
A felületen meg kell adni egy ’TRIPID’ azonosítót, valamint a névlistát. A ’TRIPID’ azonosító lehet létező érték, ekkor frissítjük az adott rekord tartalmát, illetve lehet új érték, ekkor új rekordot szúrunk be. A felület ListBox vezérlőjébe kerülnek be a rekord tömb-típusú oszlopába rögzíteni kívánt nevek úgy, hogy a beviteli mezőbe beírunk egy nevet, majd ENTER-t ütünk, vagy a ’Bevitel’ gombra kattintunk.
Mind új rekord bevitelekor, mind egy adott rekord frissítésekor összeállítjuk a megfelelő SQL-parancsot, majd ezt végrehajtjuk. Az értékek bevitelekor használnunk kell a tömb-típus konstruktorát, melynek a paraméterlistájában megadott értékek lesznek az adott oszlop értékei.
A tömb-típust az alábbi módon hoztuk létre:
CREATE TYPE P_LIST AS VARRAY(10) OF VARCHAR2(20);
Látható, hogy egy maximálisan 10 elemű, illetve elemenként legfeljebb 20 karakter hosszú értékeket tartalmazó tömb-típus jön létre. A megadott határértékek bárminemű figyelmen kívül hagyása az illető művelet megszakadását okozza.
Nézzük meg, milyen módon építettük fel az egyes SQL-parancsokat a példánkban. A műveletek a ’PASSANGERS’ táblát érintették, melynek második oszlopa P_LIST típusú:
  • INSERT
INSERT INTO PASSANGERS
VALUES (13,P_LIST(’string1’,’string2’,’string3’))
  • UPDATE azonos technikával:
UPDATE PASSANGERS
SET PASSLIST = P_LIST(’string1’,’string2’,’string3’)
WHERE TRIPID = 10
A karakterláncok értékeit a feltöltött ListBox kontrolból olvastuk ki, egy egyszerű ciklussal dolgozva fel tartalmát.

Oracle adatbázis-kezelés cikksorozat