1.NET web szolgáltatások ADO.NET Bilicki Vilmos
2 A mai előadás tartalma: ADO.NET Adatközpontú alkalmazás Csatlakozás adatforrásokhoz Online műveletek Offline műveletek
3 Adat központú alkalmazás Adat tár Mi az online környezet? Mi az offline környezet? Adat hozzáférési modellek
4 Demó MSSQL bemutatása
5 Adat tár Az ADO.NET támogatja: Struktúrálatlan Struktúrált nem hierarchikus Vesszővel elválasztott (CSV) fájlok, Microsoft Excel, Microsoft Exchange fájlok, Active Directory fájlok,… Hierarchikus XML dokumentumok Relációs adatbázisok SQL Szerver, Oracle, Access, és mások
6 Online környezet Online környezet az amelyben a felhasználók álladnó kapcsolattal rendelkeznek az adatbázishoz Előnyök: Könyebb biztonságossá tenni A párhuzamosságot könyebb kezelni Az adat frissebb Hátrányok: Állandó hálózati kapcsolat Skálázhatóság
7 Offline környezet Az offline környezetben az adatbázis egy része lemásolható, módosítható és visszaírható az adatbázisba Előnyök Bármikor dolgozhatunk, csak akkor kell csatlakoznunk amikor szükség van rá Más felhasználók is használhatják a kapcsolatot A skálázhatóság és a teljesítmény növekszik Hátrányok Az adat nem mindég naprakész A változtatási ütközéseket fel kell oldani
8 Adat hozzáférési modellek Az adat hozzáférés fejlődése 1-Rétegű (monolithic) Kliens logika Üzleti logika Adat tár 3-Rétegű “Vékony” kliens N-Rétegű 2-Rétegű “Vastag” Kliens Internet XML Web szolgált.
9 ADO.NET architektúra Mi az ADO.NET? Mely névtereket használja? Az ADO fejlődése Az ADO.NET objektum modell Az ADO.NET osztályok használata online esetben Az ADO.NET osztályok használata offline esetben
10 Az ADO.NET osztályok halmaza melyek az adatkezelést segítik Szolgáltatásai: Az ADO flexibilis utóda Offline környezet Programozási modell fejlett XML támogatással Osztályok, interfészek, enum-ok halmaza.NET keretrendszer Mi az ADO.NET
11 Kapcsolódó névterek Néveterek: System.Data System.Data.Common System.Data.SqlClient System.Data.OleDb System.Data.SqlTypes System.Xml
12 Az ADO-tó az ADO.NET-ig Connection ADO ADO.NET Command Recordset XxxConnection XxxCommand DataSet XxxTransaction XxxDataReader XxxDataAdapter
13 DataSet SQL Server.NET Data Provider SQL Server.NET Data Provider OLE DB.NET Data Provider OLE DB.NET Data Provider SQL Server 7.0 (and later) OLEDB sources (SQL Server 6.5) Az ADO.NET Objektum Modell
14 SQL Server 7.0 (and later) ADO.NET online eset Az erőforrások a kapcsolat bontásásig foglalva vannak 1.Kapcsolat nyitása 2.Parancs futtatása 3.Sorok feldolgozása 4.Olvasó bezárása 5.Kapcsolat bezárása SqlConnection SqlCommand SqlDataReader
15 Az ADO.NET használata offline kapcsolat esetén Az erőforrások az adat feldolgozása alatt nincsennek lefoglalava 1.Kapcsolat nyitás 2.DataSet feltöltés 3.Kapcsolat bontás 4.DataSet feldolgozás 5.Kapcsolat nyitás 6.Adatforrás frissítése 7.Kapcsolat bontás SqlConnection SqlDataAdapter DataSet SQL Server 7.0 (and later)
16 ADO.NET és az XML Az ADO.NET szorosan integrálja az XML kezelést XML használata offline ADO.NET alkalmazásban XML Web Szolgáltatások DataSet Adat kérés11 SQL lek.22 Eredméynek33 XML 44 Friss. XML 55 SQL frissítés66 Adat ForrásClient DataSet
17.NET Adat kapcsolat meghajtók Definíció A.NET kapcsolat meghajtó osztályok halmaza mely segít az adott erőforrás elérésben.NET meghajtó típusok SQL Server.NET OLE DB.NET ODBC.NET Egyéb
18.NET meghajtó osztályok XxxConnection XxxTransaction XxxException XxxError XxxCommand XxxParameter XxxDataReader XxxDataAdapter XxxPermission
19 Melyiket használjuk SQL Server.NET Data Provider SQL Server 7.0 vagy régebbi OLE DB.NET Data Provider SQL Server 6.5, Microsoft Access, Oracle, más források OLE DB meghajtóval ODBC.NET Data Provider Régi források melyek csak ODBC meghajtóval rendelkeznek
20 Adatbázis biztonság Az SQL Server biztonsági megoldása Windows Hitelesítés Biztonságos ellenőrzés és titkosítás Auditálás Jelszó szabályok (hossz, lejárati idő, …) Fiók zárolás Vegyes mód (Windows Azonosítás és SQL Server azonosítás) A régi rendszerekkel való kompatibilitás érdekében
21 Kapcsolat karakterlánc Megadja a kapcsolatban használt paraméterek értékeit Paraméterek Szállító (csak OLE DB) Adat forrás Kezdő Katalógus Integrált Biztonság Felhasználó ID/Jelszó Biztonsági információ mentése
22 Kapcsolat karakterlánc beállítása Csak akkor állítható be a ConnectionString tulajdonság amikor a kapcsolat zárva van Törléséhez a kapcsolatot zárni és nyitni kell Microsoft Access kapcsolat System.Data.OleDb.OleDbConnection cnNorthwind = new System.Data.OleDb.OleDbConnection(); cnNorthwind.ConnectionString = "Provider=SQLOLEDB;" + "Data Source=ProdServ01;" + "Initial Catalog=Pubs;" + "Integrated Security=SSPI;";
23 Demó Kapcsolat létrehozása varázslóval
24 Kapcsolat nyitása és zárása Explicit nyitás, zárás Open és Close metódusok Implicit nyitás, zárás Data adapter-ek tudják ezt megtenni Dispose metódus Kiveszi a kapcsolatot a gyűjteményből
25 Kapcsolat események kezelése Kapcsolat események StateChange és InfoMessage StateChangeEventArgs osztály Adatokat biztosít a meghatótól CurrentState, OriginalState csak olvashatóak Private cnNorthwind_StateChange( Object sender, System.Data.StateChangeEventArgs event) Kivétel Kezelés Try-catch InfoMessage esemény Nem kritikus hibák T-SQL Print kimenet
26 Demó Kapcsolat események bemutatása Eseménykezelő Profiler
27 Kapcsolat gyűjtemény Azokat tudja újraosztani amelyeknek egyforma a kapcsolat karakterlánca Kapcsolat karakterlánc paraméterek Kapcsolat élettartam Kapcsolat Nullázás Max Pool Size Min Pool Size Gyűjteményezés
28 Online objektum modell Adat forrás XxxConnection XxxParameter XxxDataReader XxxCommand XxxParameter XmlReader Az online alkalmazás osztályai
29 Parancs objektum A parancs objektum hivatkozás egy SQL parancsra vagy tárolt eljárásra Tulajdonságok (Name), Connection, CommandType, CommandText, Parameters Metódusok ExecuteScalar, ExecuteReader, ExecuteNonQuery ExecuteXmlReader (SqlCommand only) Paraméterek (input, output, vegyes)
30 Paraméterek Programból SqlParameter prmName = new SqlDbType.NChar, 15) prmName.Direction = ParameterDirection.Output cmdCountProds.Parameters.Add(prmName)
31 DataReader tulajdonságok ExecuteReader Csak olvasható, előre haladó A kapcsolat objektum foglalt amíg ezt használjuk Read metódus Betölti a következő sort Igaz értékkel tér vissza ha a következő sor létezik Hamissal, ha nem Item tulajdonság GetXxx metódusok (GetString, GetInt32, …) GetValues metódusok IsDbNull metódus Close metódus
32 Demó Online elérés
33 Tranzakció kezelés Két típusa van Helyi tranzakció Elosztott tranzakció Használata: SQL: BEGIN TRANS int DELETE FROM "Order Details" WHERE ProductID=42 = DELETE FROM Products WHERE ProductID=42 = = 0 = 0 COMMIT TRANS ELSE ROLLBACK TRANS ADO.NET XxxTransaction, Commit, Rollback Elkülönítési szintek: cnNorthwind.BeginTransaction(IsolationLevel.Serializable)
34 Offline architektúra EmployeesOrdersCustomersProductsCategories Products SqlDataAdapterOleDbDataAdapter SQL Server 2000 CustomersOrders SQL Server 6.5 DataSet XML Web service XmlDataDocument XML File
35 DataSet, DataTable, DataColumn Server Data Store Database Connection Stored Procedure DataSet DataTable
36 A DataSet Objektum Modell Gyűjtemények Tables (DataTable objektum gyűjtemény) Relations (DataRelation objektum gyűjtemény) Az adat hozzárendelhető Web és Windows elemekhez A séma programból vagy XSD segítségével definiálható DataRow DataColumn DataTable DataRelation Constraints
37 DataSet, DataTable, DataColumn létrehozása Programból: c =new DataSet(”xxx”); dataTable = c.Tables.Add(”yyy”); dataTable.Columns.Add(”Id”, typeof(Int32)); GUI eszközökkel DataAdapter-ből XML-ből
38 Számított cellák DataColumn Expression tulajdonság Sum([Unit Price] * [Quantity]) Az aggregáló függvények használhatják a gyermek szülő viszonyt Avg, Count, Sum, Max, Min Avg(Child.UnitPrice)
39 DataSet mentése, betöltése Két DataSet metódus ReadXml WriteXml ReadXml hibát dob ha a fájl nem létezik WriteXml felülírja a fájlt ha már létezik
40 Idegen kulcs kényszerek A IdegenKulcsKényszer az integritás megőrzését biztosítja EnforceConstraints tulajdonság A műveletek korlátozása DeleteRule és UpdateRule tulajdonságok ActionAction DescriptionDescription Cascade Törli vagy frissít a kapcsolódó sort SetNull DBNull értékre állítja a kapcsolódó sorokat SetDefault DefaultValue értékre állítja a sorokban a megfelelő cellákat None Kivételt dob
41 Példa dtCustomers = dsNorthwind.Tables["Customers"]; dtOrders = dsNorthwind.Tables["Orders"]; ForeignKeyConstraint fkcCustomersOrders = new ForeignKeyConstraint("FK_CustomersOrders", dtCustomers.Columns["CustomerID"], dtOrders.Columns["CustomerID"]); fkcCustomersOrders.DeleteRule = Rule.None; dtOrders.Constraints.Add(fkcCustomersOrders);
42 DataRelation objektum A DataRelation objektum egy navigációs viszonyt definiál, NEM egy kényszer viszonyt! Prezentációra használatos Aggregáló kifejezések használják A DataSet objektumnak van egy Relations gyűjteménye GetChildRows
43 Adat módosítás Sor hozzáadása: dtEmployees.Rows.Add(drNewEmployee) DataRow osztály BeginEdit, CancelEdit, EndEdit DataRow drEmployee = dtEmployees.Rows(3) drEmployee.BeginEdit() drEmployee("FirstName") = "John" drEmployee("LastName") = "Smith" drEmployee.EndEdit() Törlés dtEmployees.Rows.Remove(drEmployee) vagy drEmployee.Delete RowState Added, Deleted, Detached, Modified, Unchanged
44 Demó DataSet létrehozás, módosítás
45 DataView objektum Server Data Store Database Connection Stored procedure DataSet DataTable Windows and Web controls DataView
46 Példa DataView dvProducts = new DataView(dsNorthwind.Tables("Products")) dvProducts.Sort = "UnitPrice" dvProducts.RowFilter = "CategoryID > 4" grdProducts.DataSource = dvProducts
47 DataAdapter Data source DataAdapter DataTable DataSet DataAdapter Fill Update Fill Update
48 Az XxxDataAdapter Objektum Modell sp_SELECT XxxCommand SelectCommandUpdateCommandInsertCommandDeleteCommand XxxDataAdapter XxxCommand XxxConnection sp_UPDATEsp_INSERTsp_DELETE XxxDataReader
49 Demó Offline használat