Alkalmazásfejlesztés gyakorlat Active Data Objects .NET
Natív .NET adatszolgáltatók A leghatékonyabb Két különböző adatforrás között adatcserére nem alkalmas Beépített natív adatszolgáltatók Microsoft SQL Server részére Oracle részére System.Data.SqlClient
ODBC.NET A kliensalkalmazások ugyanazzal az utasításkészlettel dolgoznak adatforrástól független A kliens és az adatb. egy rétegen keresztül kommunikál egymással Csak relációs adatokra korlátozódik System.Data.ODBC
OLEDB.NET A Microsoft 1997-ben vezette be A COM technológiát használja Nem csak relációs adatok elérése (XML, MS Doc, ….) System.Data.OleDb
SQLite használata .NET alatt Szükség van egy ADO.NET provider-re Mi a System.Data.SQLite projectet használjuk Ez ADO.NET 3.5 kompatibilis, open source project Telepíthető verzió: designer támogatás VS alatt! Saját projektünkhöz hozzá kell adni Solution Explorer | References jobb klikk Add Reference… Browse System.Data.SQLite.dll (kulso\cs) Ez csak a .NET és az SQLite közötti kapocs, nem a szerver! Szerver: kulso\cs\sqlite3.dll nem managed DLL, nem lehet referenciát adni hozzá (C-ben írták) Helyette: Project | Add Existing Item… sqlite3.dll Properties ablakban: sqlite3.dll Copy to Output Directory Copy if newer ez garantálja hogy build után elérhető
System.Data.Xxx XxxConnection XxxCommand XxxDataReader adatbázis-kapcsolatot reprezentál Connection string: new OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=bank.mdb”); XxxCommand SQL parancsokat reprezentál ExecuteReader(), ExecuteNonQuery(), ExecuteScalar() XxxDataReader Lekérdezés eredményének előrehaladó bejárása Xxx = Odbc, OleDb, Sql, Oracle (, Sqlite, …)
System.Data.SQLite Kapcsolat létrehozása SQL parancs létrehozása using (SQLiteConnection conn = new SQLiteConnection()) SQL parancs létrehozása SQLiteCommand com = conn.CreateCommand(); com.CommandText = „… sql parancs …”; SQL parancs végrehajtása com.ExecuteReader() SELECT-hez SQLiteDataReader com.ExecuteScalar() SELECT-hez 1 db object com.ExecuteNonQuery() egyéb parancsokhoz Előtte mindig figyeljünk arra hogy megnyissuk a connection-t (Open())!!! SQLiteDataReader feldolgozása Read() léptet true, ha van még feldolgozatlan sor Get(int) vagy indexer [„oszlopnév] object-et ad vissza Lezárás using elintézi A többi adatbázis verziónál is ugyanez a séma
10-cs-GUI-DB Nyissuk meg a solutiont Fordítsuk és futtassuk az alkalmazást! Nézzük meg a megvalósított menüpontokat! New Book és List Books Vizsgáljuk meg az új kódot! Book.cs a könyv adatokat tartalmazó osztály BookShopController.cs műveletek logikája BuyBookDialog.cs új könyv vásárlása BookShopGui.cs eseménykezelés + táblázat Ami igazán új: BookShopDaoDb.cs DB kezelés
Feladat Ügyfél adatbázis műveleteinek megvalósítása Úgy ahogy könyveknél meg lett valósítva BookShopDaoDb osztályban kell módosítanunk AddCustomer() beszúrás paraméteresen GetCustomers() ügyfélek lekérése Írjunk egy Customer FindCustomerByName (SQLiteConnection, Customer) metódust is Ügyfelek beszúrásánál figyeljünk a névegyezésre! Ügyfelek listázása: DataGridView segítségével jelenítsük meg táblázatos formában a főablakban!
Linkek ADO .NET provider SQLite engine-hez http://sqlite.phxsoftware.com/ Connection string-ek SQLite alatt (is) http://www.connectionstrings.com/sqlite SQLite Administrator GUI tool http://sqliteadmin.orbmu2k.de/ Egy kis magyarázat az órai példákhoz /pub/Alkalmazasfejlesztes/gyakorlat/nappali/kiegeszito_anyagok/alkfejl_07.pdf