info@topschool.hu
(70) 361 71 38
Akkreditációs lajstromszám: AL-1975
Szakkönyvek

C# adatbázis-programozás
Mesteri szinten

A C# nyelv és az ADO.NET rendszer segítségével az adatbázisokat kezelo és azokra épülo alkalmazások egy teljesen új generációját építhetjük fel. Ez a könyv bevezetés ebbe az új világba. A szerzo semmiféle az adatbázis-programozással kapcsolatos eloismeretet nem tételez fel, helyette maga vezeti be az olvasót a téma minden részterületére, a grafikus felhasználói felülettol egészen a köztes réteg megvalósításáig. Aki pedig ismeri az ADO rendszer korábbi változatait, az a könyv segítségével rengeteg újdonságot fedezhet majd fel az ADO.NET-ben, s mindezt szédületes sebességgel. Az anyagból az is világosan kiderül, miért olyan fontos a .NET paradigmával kapcsolatban az XML nyelv.


Online könyv rendelés
Webshop ár: 6 500 Ft
Résztvevői ár: 5 200 Ft

Szerző: Jason Price
Oldalszám: 675
Szint: -
Kiadó: Kiskapu Kiadó
ISBN: 9789639301832
Kiadás éve: 2004

I. rész Bevezetés az ADO.NET és az adatbázisok világába
1. fejezet Bevezetés az ADO.NET adatbázis-programozásba

A szükséges szoftver beszerzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Elsõ ADO.NET programunk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1. lépés: SqlConnection objektum létrehozása az adatbázishoz
való csatlakozásra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. lépés: SqlCommand objektum létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. lépés: Az SqlCommand objektum CommandText tulajdonságának beállítása . . 6
4. lépés: Az SqlConnection objektum megnyitása . . . . . . . . . . . . . . . . . . . . . . 7
5. lépés: A SELECT utasítás végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. lépés: A sor beolvasása az SqlDataReader objektummal . . . . . . . . . . . . . . . 7
7. lépés: Az oszlopértékek megjelenítése az SqlDataReader objektumból . . . . 7
8. lépés: Az SqlDataReader objektum bezárása . . . . . . . . . . . . . . . . . . . . . . . . 7
9. lépés: Az SqlConnection objektum bezárása . . . . . . . . . . . . . . . . . . . . . . . . 8
Kivételek kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
A FirstExample.cs lefordítása és futtatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Csatlakozás Access és Oracle adatbázisokhoz . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Csatlakozás Access adatbázishoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Csatlakozás Oracle adatbázishoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Ismerkedés a Visual Studio .NET-tel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
A Visual Studio .NET elindítása és egy projekt létrehozása . . . . . . . . . . . . . . 16
A program lefordítása és futtatása a VS .NET használatával . . . . . . . . . . . . . . 22
A .NET dokumentáció használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
A dokumentáció elérése a .NET SDK-ban . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
A dokumentáció elérése a VS .NET-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Az SQL Server dokumentáció használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2. fejezet Bevezetés az adatbázisok világába
Bevezetés az adatbázisok világába . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Az SQL Server használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Az SQL Server elindítása és leállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Az Enterprise Manager használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
A Northwind adatbázis felfedezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Elsõdleges kulcsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Táblakapcsolatok és idegen kulcsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Null értékek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Indexek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Oszloptípusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A Customers tábla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Az Orders tábla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Az Order Details tábla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
A Products tábla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Lekérdezések készítése az Enterprise Manager használatával . . . . . . . . . . . . . . 50
Táblák létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A Columns lap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Az elsõdleges kulcs beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
A jogosultságok beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Kapcsolat létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Index létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Megszorítás létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Az SQL használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

3. fejezet Bevezetés az SQL használatába
A Query Analyzer használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
A DML utasításokról . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Bevezetés az adatmeghatározó utasítások használatába . . . . . . . . . . . . . . . . . 93
Adatbázisok elérése a Visual Studio .NET használatával . . . . . . . . . . . . . . . . . . 95
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
A Transact-SQL alapjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Változók használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

4. fejezet Bevezetés a Transact-SQL programozásba
Megjegyzések használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Feltételes szerkezetek használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
CASE utasítások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
WHILE ciklusok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
A címkék és a GOTO utasítás használata . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
RETURN utasítások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
WAITFOR utasítások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
RAISERROR utasítások használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Kurzorok használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
1. lépés: Változók bevezetése a SELECT utasítás által visszaadott
oszlopértékek tárolására . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
2. lépés: A kurzor bevezetése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3. lépés: A kurzor megnyitása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4. lépés: A sorok kiolvasása a kurzorból . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5. lépés: A kurzor bezárása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Teljes példa: ProductCursor.sql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Függvények használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Összesítõ függvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Matematikai függvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Karakterláncfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Dátum- és idõfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Rendszerfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Felhasználói függvények létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Skalárfüggvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Helyben kifejtett táblaértékû függvények . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Többutasításos táblaértékû függvények . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Bevezetés a tárolt eljárások használatába . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Tárolt eljárások létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Tárolt eljárások végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Bevezetés a kioldók használatába . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Az InsertProductTrigger létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Az InsertProductTrigger tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Az UpdateUnitPriceProductTrigger létrehozása és tesztelése . . . . . . . . . . . . 138
A DeleteProductTrigger létrehozása és tesztelése . . . . . . . . . . . . . . . . . . . . . 140
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

5. fejezet Az ADO.NET osztályok áttekintése
Felügyelt adatszolgáltatók és általános adatosztályok . . . . . . . . . . . . . . . . . . . 144
Felügyeltszolgáltató-osztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Általános adatosztályok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
SELECT utasítással kinyert sorok helyben tárolása . . . . . . . . . . . . . . . . . . . . . 150
Az eljárás váza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
A teljes program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

6. fejezet Ismerkedés a Windows-alkalmazásokkal és az ADO.NET-tel
Egy egyszerû Windows-alkalmazás készítése . . . . . . . . . . . . . . . . . . . . . . . . . 162
A Windows-alkalmazás létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Az ablak háttérkódja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
A Solution Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Az osztálynézet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Windows-vezérlõk használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Adatbázisok elérése DataGrid vezérlõkkel . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Windows-ablak létrehozása a Data Form varázslóval . . . . . . . . . . . . . . . . . . . 181
Adatkötés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Vezérlõk hozzáadása az ablakhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
A Main() tagfüggvény hozzáadása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
A jelszó beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
A program futtatása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

II. rész Az ADO.NET adatbázis-programozás alapjai
7. fejezet Kapcsolódás adatbázisokhoz

Az SqlConnection osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
SqlConnection objektum használata
SQL Server adatbázishoz való csatlakozáshoz . . . . . . . . . . . . . . . . . . . . . . . . . 195
Adatbázis-kapcsolat létesítése és bezárása . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Kapcsolattárolás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Kapcsolati objektumok állapotának lekérdezése . . . . . . . . . . . . . . . . . . . . . 202
A kapcsolati objektumok eseményeinek alkalmazása . . . . . . . . . . . . . . . . . 203
Kapcsolati objektumok létrehozása a Visual Studio .NET segítségével . . . . . 207
Esemény kódolása a VS .NET-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

8. fejezet Adatbázisparancsok végrehajtása
Az SqlCommand osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
SqlCommand objektum létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
SqlCommand objektumok létrehozása konstruktorral . . . . . . . . . . . . . . . . . 218
SqlCommand objektumok létrehozása a CreateCommand() tagfüggvénnyel 220
SELECT utasítások és TableDirect parancsok végrehajtása . . . . . . . . . . . . . . . 220
SELECT utasítás végrehajtása az ExecuteReader() tagfüggvénnyel . . . . . . . . 221
A parancsviselkedés szabályozása az ExecuteReader() tagfüggvénnyel . . . . 224
TableDirect utasítás végrehajtása az ExecuteReader() tagfüggvénnyel . . . . . 232
SELECT utasítás végrehajtása az ExecuteScalar() tagfüggvénnyel . . . . . . . . . 234
XML adatokat visszaadó parancsok végrehajtása
az ExecuteXmlReader() tagfüggvény segítségével . . . . . . . . . . . . . . . . . . . . 236
Az adatbázisban adatokat megváltoztató parancsok végrehajtása . . . . . . . . . . 239
INSERT, UPDATE és DELETE utasítások végrehajtása
az ExecuteNonQuery() tagfüggvény segítségével . . . . . . . . . . . . . . . . . . . . . 240
Adatmeghatározó utasítások végrehajtása az ExecuteNonQuery()
tagfüggvénnyel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Bevezetés a tranzakciók használatába . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Parancsok paraméterezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1. lépés: paraméter-helyõrzõket tartalmazó utasítással rendelkezõ
parancsobjektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
2. lépés: paraméterek hozzáadása a parancsobjektumhoz . . . . . . . . . . . . . . 250
3. lépés: a paraméterek beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
4. lépés: a parancs végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
SQL Server tárolt eljárások végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Eredményhalmaz nélküli tárolt eljárások végrehajtása . . . . . . . . . . . . . . . . . 255
Eredményhalmazt visszaadó tárolt eljárások végrehajtása . . . . . . . . . . . . . . 262
Parancsobjektumok létrehozása a Visual Studio .NET segítségével . . . . . . . . . 265
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

9. fejezet Eredmények beolvasása DataReader objektumokkal
Az SqlDataReader osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
SqlDataReader objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Sorok beolvasása az SqlDataReader objektumból . . . . . . . . . . . . . . . . . . . . . . 273
Erõsen típusos oszlopértékek visszaadása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Oszlopértékek beolvasása a Get* tagfüggvényekkel . . . . . . . . . . . . . . . . . . 279
Példa a Get* tagfüggvények használatára . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Oszlopértékek beolvasása a GetSql* tagfüggvényekkel . . . . . . . . . . . . . . . . 286
Példa a GetSql* tagfüggvények használatára . . . . . . . . . . . . . . . . . . . . . . . . . . 288
A null értékek beolvasása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Több SQL parancs egyidejû végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Több SELECT parancs egyidejû végrehajtása . . . . . . . . . . . . . . . . . . . . . . . . 293
Több SELECT, INSERT, UPDATE és DELETE utasítás egyidejû végrehajtása . 296
A DataReader objektum használata a Visual Studio .NET-ben . . . . . . . . . . . . . 298
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

10. fejezet Adatok tárolása a DataSet objektumokban
Az SqlDataAdapter osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
SqlDataAdapter objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
A DataSet osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
C# adatbázis-programozás mesteri szinten ix
DataSet objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
A DataSet objektum feltöltése adatokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
A DataSet feltöltése több DataTable objektummal . . . . . . . . . . . . . . . . . . . . 322
A DataRow, DataSet és DataTable objektumok
egyesítése másik DataSet objektummal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
XML írása és olvasása DataSet objektumokkal . . . . . . . . . . . . . . . . . . . . . . . . . 332
A WriteXml() tagfüggvény használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
A WriteXmlSchema() tagfüggvény használata . . . . . . . . . . . . . . . . . . . . . . . 335
A ReadXml() tagfüggvény használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Táblák és oszlopok leképezése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Oszlopértékek beolvasása erõsen típusos DataSet osztályok használatával . . . 342
Erõsen típusos DataSet osztály létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . 343
Erõsen típusos DataSet osztály használata . . . . . . . . . . . . . . . . . . . . . . . . . . 347
DataAdapter objektum létrehozása a Visual Studio .NET-ben . . . . . . . . . . . . . 348
DataSet objektum létrehozása a Visual Studio .NET-ben . . . . . . . . . . . . . . . . . 352
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

11. fejezet Adatok módosítása DataSet objektumokkal
A DataTable osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
A DataRow osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
A DataColumn osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Megszorítások hozzáadása DataTable és DataColumn objektumokhoz . . . . . . 363
A megszorítások kézi beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Sorok keresése, szûrése és rendezése egy DataTable objektumban . . . . . . . . 381
Adatsor keresése a DataTable objektumban . . . . . . . . . . . . . . . . . . . . . . . . . 381
DataRow objektumok szûrése és rendezése a DataTable objektumban . . . . 382
Sorok módosítása a DataTable objektumban . . . . . . . . . . . . . . . . . . . . . . . . . . 388
A DataAdapter objektum beállítása a módosítások adatbázisba küldéséhez 388
DataRow hozzáadása a DataTable objektumhoz . . . . . . . . . . . . . . . . . . . . . 392
DataRow módosítása a DataTable objektumban . . . . . . . . . . . . . . . . . . . . . 396
DataRow törlése a DataTable objektumból . . . . . . . . . . . . . . . . . . . . . . . . . 399
Azonosító oszlop új értékeinek beolvasása . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Adatbázissorok beszúrása, módosítása és törlése tárolt eljárásokkal . . . . . . . . 403
A tárolt eljárások létrehozása az adatbázisban . . . . . . . . . . . . . . . . . . . . . . . 404
A DataAdapter beállítása a tárolt eljárások meghívásához . . . . . . . . . . . . . . 407
DataRow beszúrása a DataTable objektumba . . . . . . . . . . . . . . . . . . . . . . . . 410
DataRow módosítása a DataTable objektumban . . . . . . . . . . . . . . . . . . . . . 412
DataRow törlése a DataTable objektumból . . . . . . . . . . . . . . . . . . . . . . . . . 414
SQL utasítások automatikus létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Ismerkedés a DataAdapter és a DataTable eseményeivel . . . . . . . . . . . . . . . . 418
A DataAdapter eseményei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
A DataTable eseményei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Sikertelen frissítések kezelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Egy sikertelen frissítés esete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
A ContinueUpdateOnError tulajdonság beállítása . . . . . . . . . . . . . . . . . . . . 427
Egy sikertelen frissítést okozó példaprogram . . . . . . . . . . . . . . . . . . . . . . . . 428
Hibakeresés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
A hiba kijavítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
Tranzakciók használata a DataSet objektummal (SQL) . . . . . . . . . . . . . . . . . . 431
A DataAdapter objektum Command objektumának Transaction tulajdonsága . 432
Adatok módosítása egy erõsen típusos DataSet objektummal . . . . . . . . . . . . . 433
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

12. fejezet Kapcsolódó adatok keresése és módosítása
A UniqueConstraint osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
UniqueConstraint objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
A ForeignKeyConstraint osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
ForeignKeyConstraint objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . 442
A DataRelation osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
DataRelation objektumok létrehozása és alkalmazása . . . . . . . . . . . . . . . . . . . 445
A DataRelation objektum létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
A DataRelation objektum által létrehozott megszorítások . . . . . . . . . . . . . . . 448
DataRow objektumok keresése a szülõ
és gyermek DataTable objektumokban . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Kapcsolódó sorok hozzáadása, frissítése és törlése . . . . . . . . . . . . . . . . . . . . . 451
A DataAdapter objektumok beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
DataSet objektumok létrehozása és feltöltése . . . . . . . . . . . . . . . . . . . . . . . . 455
DataRow objektumok hozzáadása a customersDT
és az ordersDT objektumokhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
A customersDT és az ordersDT DataRow objektumainak frissítése . . . . . . . 456
DataRow objektumok törlése a customersDT
és az ordersDT objektumokból . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
A customersDT és az ordersDT módosításainak érvényesítése
az adatbázisban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
A szülõsorok elsõdleges kulcsának frissítésekor felmerülõ problémák . . . . . . 460
A frissítések és törlések szabályozása az SQL Server segítségével . . . . . . . . 461
A frissítések és törlések szabályozása a ForeignKeyConstraint objektum
UpdateRule és DeleteRule tulajdonsága segítségével . . . . . . . . . . . . . . . . . . 462
Szülõtábla elsõdleges kulcsának frissítése és a módosítások érvényesítése
az adatbázisban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Beágyazott XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Kapcsolatok meghatározása a Visual Studio .NET segítségével . . . . . . . . . . . . 471
C# adatbázis-programozás mesteri szinten xi
A Windows-alkalmazás létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Kapcsolat hozzáadása a DataSet objektum XML sémájához . . . . . . . . . . . . . 473
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

13. fejezet DataView objektumok használata
A DataView osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
DataView objektumok létrehozása és alkalmazása . . . . . . . . . . . . . . . . . . . . . 481
Az alapértelmezett rendezõalgoritmus használata . . . . . . . . . . . . . . . . . . . . . . 485
Irányított szûrés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
A DataRowView osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
DataRowView objektumok keresése DataView objektumokban . . . . . . . . . . . 488
DataRowView objektumok indexének keresése
a Find() tagfüggvény alkalmazásával . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
DataRowView objektumok keresése
a FindRows() tagfüggvény alkalmazásával . . . . . . . . . . . . . . . . . . . . . . . . . . 489
DataRowView objektumok hozzáadása, módosítása
és DataView objektumokból való eltávolítása . . . . . . . . . . . . . . . . . . . . . . . . . 492
DataRowView objektum hozzáadása egy DataView objektumhoz . . . . . . . . 492
Meglévõ DataRow objektum módosítása . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Meglévõ DataRowView objektum eltávolítása . . . . . . . . . . . . . . . . . . . . . . . 493
Gyermek DataView objektumok létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . 497
A DataViewManager osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
DataViewManager objektumok létrehozása és alkalmazása . . . . . . . . . . . . . . 501
DataView objektumok létrehozása a Visual Studio .NET segítségével . . . . . . . 504
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506

III. rész Haladó adatbázis-programozás az ADO.NET-tel
14. fejezet Haladó tranzakcióvezérlés

Az SqlTransaction osztály . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Mentési pontok beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Mentési pont beállítása a T-SQL-ben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Mentési pont beállítása az SqlTransaction objektummal . . . . . . . . . . . . . . . . 511
A tranzakciók elszigeteltségi szintjének beállítása . . . . . . . . . . . . . . . . . . . . . . 513
Az elszigeteltségi szint beállítása a T-SQL-ben . . . . . . . . . . . . . . . . . . . . . . . 515
Az SqlTransaction objektumok elszigeteltségi szintjének beállítása . . . . . . . 518
Zárolások az SQL Serverben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Az SQL Server zárolástípusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Az SQL Server zárolási módjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Az SQL Server zárolási adatainak megtekintése . . . . . . . . . . . . . . . . . . . . . . 524
Tranzakció akadályozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
A zárolás elévülésének beállítása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Az akadályozás és a Serializable/Repeatable Read tranzakciók . . . . . . . . . . 528
Holtpontok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

15. fejezet Ismerkedés a webalkalmazásokkal: ASP.NET
Egyszerû ASP.NET webalkalmazás készítése VS .NET környezetben . . . . . . . . 540
A WebForm1.aspx fájl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
A WebForm1.aspx.cs fájl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Webes ûrlapvezérlõk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Egy összetettebb alkalmazás felépítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Adatbázis elérése a DataGrid vezérlõvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
A webalkalmazás elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
A DataGrid testreszabása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Adatbázis-elérés a DataList vezérlõvel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Az állapot megõrzése a webalkalmazásokban . . . . . . . . . . . . . . . . . . . . . . . . . 575
Adatok tárolása az ügyfélen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Adatok tárolása a kiszolgálón . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Egyszerû bevásárlókosár-alkalmazás készítése . . . . . . . . . . . . . . . . . . . . . . . . 583
A Buy gomb létrehozása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
A kosár elkészítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
Kód hozzáadása a WebForm1.aspx.cs fájlhoz . . . . . . . . . . . . . . . . . . . . . . . 586
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588

16. fejezet XML-támogatás az SQL Serverben
Az SQL Server FOR XML záradékának használata . . . . . . . . . . . . . . . . . . . . . . 591
A RAW üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Az AUTO üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Az EXPLICIT üzemmód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
Az XMLDATA beállítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Az ELEMENTS beállítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
A BINARY BASE64 beállítás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Az XML dokumentumszerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
XPath kifejezések . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Az SQL Server elérése HTTP-vel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
SQL XML-támogatás az IIS-hez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
SQL utasítások közvetlen végrehajtása böngészõben . . . . . . . . . . . . . . . . . . 615
SQL utasítások végrehajtása XML sablonokkal . . . . . . . . . . . . . . . . . . . . . . . 618
Az XML formázása XSL stíluslapokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
C# adatbázis-programozás mesteri szinten xiii
Az OPENXML() SQL Server függvény . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Az OPENXML() formája . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
Az OPENXML() használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621
XML dokumentum tárolása az XmlDocument objektummal . . . . . . . . . . . . . . 624
XML dokumentum tárolása az XmlDataDocument objektummal . . . . . . . . . . 630
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

17. fejezet Webszolgáltatások
Webszolgáltatás készítése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
A WSDL fájl tartalma és a szolgáltatás tesztelése . . . . . . . . . . . . . . . . . . . . . . . 643
A webszolgáltatást leíró WSDL fájl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
A webszolgáltatás tesztelése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
A webszolgáltatás használata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
A webszolgáltatás bejegyzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
Összegzés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Tárgymutató 659


Kapcsolódó tanfolyamok: