WebElektronika

SQLite adatbázis használata a C# nyelvben

person access_time 2014.12.15.
Ebben a cikkben megnézzük, hogy hogyan lehet C# nyelvben SQLite adatbázist használni. Létrehozunk adatbázist, rekordot írunk, törlünk, módosítunk.


Az SQLite egy dinamikus típuskezelést használó, "C" forrású könyvtárral rendelkező, relációs adatbáziskezelő rendszer. A teljes adatbázis egy (hordozható) file-ban kerül megvalósításra.

 

Néhány érdekes link az SQLite-tal kapcsolatban
 

1. https://www.sqlite.org/datatype3.html

2. https://www.sqlite.org/lang_datefunc.html

3. https://www.sqlite.org/download.html

 

 

Console-os projekt készítése
 

Indítsuk el a VS2012-t, majd a File / New / Project menüpont után válasszuk ki a ConsoleApplication-t.
 

projekt
1. ábra   Projekt létrehozása
 

A projekt (névtér) neve :ConsoleSQLite. A Program osztályban hozzunk létre néhány string-et, amelyekben a különböző SQL parancsokat fogjuk megadni (2. ábra).
A "createDatabase" string úgy készült, hogy az "Id" oszlopa kulcsmező, automatikusan növekszik eggyel. A többi oszlop null mezős, azaz, nem kötelező értéket adnunk, amikor új rekordot viszünk fel az adattáblába. Érdemes tudni továbbá azt, hogy ezt a string-et többször is "futtathatjuk", mert csak akkor készíti el a táblát, ha még nincs, nem írja felül, ha már létezne az "emberek" adattábla.
 

utasitasok
2. ábra   A felhasznált SQL parancsok
 

A következő string-gel új rekordot tudunk felvinni az "emberek" adattáblába. Látható, hogy az "Id" oszlop nem kap értéket, de egyébként minden oszlopba írunk a null mező ellenére.

A projekt ismertetése során módosítani fogunk egy rekordot, ezért hoztuk létre az "updateRecord" string-et. Azt a rekordot fogjuk felülírni, amelynek az Id értéke 3. Tekintettel arra, hogy az Id kulcsmező, ezért csak egy rekordot fog ez a módosítás érinteni.

A módosítás után törölni fogjuk a 4. rekordot, ezért deklarátluk a "deleteRecord" string-et is.

Ezután készítsük el az "SQLParancs()" nevű metódusunkat a Program nevű osztályban. Ahhoz, hogy az SQLite-ot használni tudjuk, le kell töltenünk a www.sqlite.org oldalról az ehhez szükséges DLL-t.

Ezzel a metódussal fogjuk futtatni a különböző SQL parancsainkat, amelyeket már korábban bemutattunk (2. ábra). Az SQLiteConnection osztályt példányosítjuk a using blokkban. További lehetőségek találhatók ezen a linken.

Egy újabb using bokkban létrehozzuk az SQLiteCommand osztályból a "com" példányt, majd megnyitás után futtatjuk azt az SQL parancsot, amelyet a metódus meghívásakor átadtunk a paraméterlistájában (3. ábra).
 

sql1
3. ábra   Az egyik felhasznált metódus
 

Készítsünk még egy metódust, mert a rekordok megjelenítéséhez a 3. ábrán lévő megoldás nem alkalmas. Ezért használjuk a 4. ábrán lévő eljárást, ahol a paraméterlistája csak az adatbázis nevét tartalmazza (4. ábra). Amikor a "MutatRecord()" metódust meghívjuk, akkor a konzolra a "WriteLine()" segítségével kiírjuk a rekordok néhány elemét. Ehhez fel kellett használnunk az SQLiteDataReader osztály példányát is.
 

parancs2
4. ábra   A rekordok mutatása
 

Végül, mielőtt futtatnánk az SQL parancsainkat, készítsük el azt a metódusunkat is, amelynek segítségével a rekordok számát tudjuk megkapni (5. ábra).
 

parancs3
5. ábra   A rekordok számát visszaadó metódus
 

Először hozzuk létre az adatbázisunkat, amelynek a neve : "webelektronika.db3". Ehhez a "Main()" metódust módosítsuk a 6. ábrának megfelelően.
 

main1
6. ábra   Az adatbázis létrehozása
 

Futtassuk most debug módban (F5) a projektünket. A konzolablak megjelenik és eltűnik. Ha megnézzük a Bin/Debug könyvtárat (ahol a lefordított exe program van) megtaláljuk a "webelektronika.db3" adatbázisunkat.
 

Írjunk most az adatbázisban található "emberek" adattáblába. Módosítsuk a 7.ábrának megfelelően a "Main()" metódusunkat. Futtatás után írjuk az "insertDatatable" string-et, hogy a rekordjaink különböző értékeket tartalmazzanak.

Vegyünk fel legalább 6-7 rekordot.
 

main2
7. ábra   Az "emberek" adattábla feltöltése rekordokkal
 

Ha a táblánkba felvettünk legalább 6-7 sort, akkor ismételten módosítsuk a "Main()" metódust a 8. ábrának megfelelően.
 

main3
8. ábra   A rekordok megjelenítése
 

Futtassuk ezt is debug módban (9. ábra).
 

fut1
9. ábra   A különböző rekordok a konzolablakon
 

Írjuk felül a 3. számú rekord egyik tulajdonságát, módosítsuk "Teszt Elek" nevét. Ehhez használjuk fel a 2. ábrán látható "updateRecord" string-et, hívjuk meg ezzel az SQL paranccsal az "SQLParancs()" metódusunkat (10. ábra).
 

main4
10. ábra   Az Id=3 rekord Nev tulajdonságának módosítása
 

Futtassuk megint a 8. ábrán lévő alkalmazásunkat, hogy megkapjuk az "emberek" adattáblánk tartalmát (11. ábra).
 

fut2
11. ábra   A módosított adattábla
 

Töröljünk most egy rekordot, ehhez használjuk fel a 2. ábrán lévő "deleteRecord" string-et. Töröljük ki a táblánkból a 4. sort.

Futtassuk debug módban a 12. ábrán lévő "Main()" metódust.
 

main5
12. ábra   Rekord törlése az "emberek" táblából
 

Ha most újra listázzuk az adattáblánk tartalmát, látni fogjuk, hogy a 4. sor (Id=4) eltűnt (13. ábra).
 

fut3
13. ábra   Törlés utáni eredmény
 

Végül pedig, írasuk ki a képernyőre, hogy hány rekordunk található az adattáblánkban. Ehhez használjuk fel a "MaxIDfromDatatable()" metódust, amely int típust ad vissza, tehát ezt adjuk át a metódusunk meghívásakor a WriteLine()-nak (14. ábra).
 

main6
14. ábra   Megjelenítjük a rekordok számát
 

A futási eredményt láthatjuk a 15. ábrán.
 

fut4
15. ábra   Rekordok száma az "emberek" adattáblában