Suchen und Finden
Service
ADO.NET - Grundlagen und Profiwissen
Detlev Wanzke, Lothar Wanzke
Verlag Carl Hanser Fachbuchverlag, 2006
ISBN 9783446405196 , 799 Seiten
2. Auflage
Format PDF, OL
Kopierschutz Wasserzeichen
Inhalt
4
Vorwort
16
An wen richtet sich das Buch?
16
Welche .NET-Sprache wird verwendet?
16
Installation der Beispiele
17
Installation der SQL Server-Beispieldatenbank
17
Die Website zum Buch
17
1 ADO.Net-Grundlagen
18
1.1 Was ist ADO.Net?
19
1.2 Architektur von ADO.Net
20
1.3 Komponentenübersicht
22
1.3.1 .NET-Datenprovider
22
1.3.2 DataSet
24
1.3.3 Datenbindung
25
1.3.4 Steuerelemente
26
1.4 Zusammenspiel der ADO.Net-Komponenten
27
1.4.1 Beispielanwendung mit DataReader
27
1.4.2 Beispielanwendung mit DataAdapter
35
1.5 Zusammenfassung
42
2 Die Datenbanksprache SQL
44
2.1 Was ist SQL?
45
2.2 SQL im Einsatz
46
2.2.1 SQL-Editoren
46
2.2.2 Allgemeine SQL-Regeln
48
2.3 DQL – Datenabfragen mit SELECT-Anweisungen
50
2.3.1 Die Syntax der SELECT- Anweisung
50
2.3.2 Einfache SELECT-Anweisungen
52
2.3.3 Verknüpfen mehrerer Tabellen
54
2.3.4 Die WHERE-Bedingung
59
2.3.5 Einschränken der Ergebnismenge
64
2.3.6 Aggregatfunktionen
66
2.3.7 Gruppieren von Datensätzen
68
2.3.8 Arbeiten mit Unterabfragen
70
2.4 DML – Datenmanipulation
73
2.4.1 Eine neue Tabelle erstellen mit SELECT INTO
74
2.4.2 Datensätze einfügen mit INSERT
75
2.4.3 Datensätze ändern mit UPDATE
77
2.4.4 Datensätze löschen mit DELETE
79
2.5 DDL – Datendefinition
80
2.5.1 Generieren eines Änderungsskripts über Visual Studio
80
2.5.2 Skript über SQL Server Management Studio generieren
82
2.5.3 Verwenden von DDL im Code
83
2.6 Zusammenfassung
84
3 Visual Studio.NET-Überblick
86
3.1 Einstelloptionen im Visual Studio.NET
87
3.2 Der Server-Explorer
89
3.2.1 Verbindung mit einer Datenbank herstellen
90
3.2.2 Arbeiten mit Tabellen
94
3.2.3 Arbeiten mit Ansichten
100
3.2.4 Gespeicherte Prozeduren
101
3.3 Das Datenquellenfenster
102
3.3.1 Welche Datenquellen kann man anlegen?
104
3.3.2 Arbeiten mit Datenquellen
105
3.4 Zusammenfassung
106
4 Visual Studio.NET und die Datenquellen
108
4.1 Erstellen der Beispielanwendung
109
4.2 Verwenden eines DataSets als Datenquelle
112
4.2.1 Datenquelle anlegen
113
4.2.2 DataSet in Formular einbinden
117
4.3 Verwenden einer Klasse als Datenquelle
122
4.3.1 Klasse implementieren
122
4.3.2 Klasse dem Datenquellenfenster hinzufügen
123
4.3.3 Klasse in Formular einbinden
125
4.3.4 Analyse des Ergebnisses
127
4.3.5 Anzeigen des Tabelleninhalts
128
4.3.6 Speichern und Laden von Objektdaten
130
4.4 Fazit
134
5 Die Connection-Klasse
136
5.1 Das Beispielprogramm
138
5.2 Verbindung zur Datenbank herstellen
139
5.2.1 Verbindung zur SQL Server-Datenbank herstellen
140
5.2.2 Verbindung zu MS Access-Datenbank herstellen
142
5.3 Eigenschaften
143
5.3.1 Die ConnectionString-Eigenschaft
143
5.3.2 Die ConnectionTimeout-Eigenschaft
144
5.3.3 Die State-Eigenschaft
145
5.3.4 Weitere Eigenschaften
145
5.4 Methoden
148
5.4.1 Die Open-Methode
149
5.4.2 Die Close-Methode
149
5.4.3 Die BeginTransaction-Methode
149
5.4.4 Die CreateCommand-Methode
150
5.4.5 Weitere Methoden
151
5.5 Verbindungspooling
153
5.6 Metadaten
155
5.6.1 Metadatenauflistungen
155
5.6.2 Metadatenauflistung laden
156
5.6.3 Metadaten zu den Metadaten
157
5.7 Zusammenfassung
157
6 Die Command-Klasse
160
6.1 Objektmodell des Commands
161
6.2 Das Beispielprogramm
162
6.3 Erzeugen des Command-Objekts
164
6.4 Command ausführen
166
6.5 Parameter
170
6.5.1 Parameter im SqlCommand
170
6.5.2 Parameter im OleDbCommand-Objekt
170
6.5.3 Direction-Eigenschaft der Parameter
171
6.5.4 Parameter bei Verwendung des DbCommand
174
6.5.5 Parameter durch String-Variablen ersetzen
176
6.6 Eigenschaften
177
6.6.1 CommandType-Eigenschaft
177
6.6.2 CommandText-Eigenschaft
178
6.6.3 Weitere Eigenschaften
178
6.7 Methoden zur Ausführung des Commands
180
6.7.1 ExecuteScalar-Methode
180
6.7.2 ExecuteNonQuery-Methode
181
6.7.3 ExecuteReader-Methode
182
6.7.4 ExecuteXMLReader-Methode
183
6.8 Asynchrone Ausführung des SqlCommands
184
6.8.1 Der „async“-Parameter im ConnectionString
185
6.8.2 Rückmeldung
185
6.8.3 Anwendungsbeispiel
186
6.9 Weitere Methoden des Commands
188
6.10 Anwendungsbeispiele für die Command-Klasse
190
6.10.1 Das Formular in der Beispielanwendung
190
6.10.2 Neuen Datensatz anlegen
192
6.10.3 Datenänderungen speichern
193
6.10.4 Datensatz löschen
194
6.11 Zusammenfassung
197
7 Die DataReader-Klasse
198
7.1 Verwendung
199
7.2 Objektmodell des DataReaders
201
7.3 Das Beispielprogramm
201
7.4 Erzeugen des DataReaders
203
7.5 Verwendung des DataReaders
204
7.6 Eigenschaften
205
7.6.1 Item-Eigenschaft bzw. Indexer
205
7.6.2 Weitere Eigenschaften
206
7.7 Methoden
208
7.7.1 Die Read-Methode
208
7.7.2 Die NextResult-Methode
209
7.7.3 Get-Methoden zum Auslesen der Spaltenwerte
211
7.7.4 Methoden zum Auslesen von Metadaten
213
7.7.5 Die GetSchemaTable-Methode
215
7.7.6 Weitere Methoden
217
7.8 Zusammenfassung
218
8 Die DataAdapter-Klasse
220
8.1 Lokaler Datenspeicher und DataAdapter
221
8.2 DataAdapter innerhalb des .Net Data Providers
222
8.3 Objektmodell des DataAdapters
225
8.4 Das Beispielprogramm
226
8.5 Erzeugen des DataAdapters
228
8.5.1 Erzeugen des Adapters über den Konstruktor
229
8.5.2 DbDataFactory und DbDataAdapter
230
8.6 Verwendung des DataAdapter-Objekts
232
8.6.1 DataAdapter und Commands anlegen
233
8.6.2 Daten laden und anzeigen
235
8.6.3 Änderungen in Datenbank zurückspeichern
236
8.7 CommandBuilder und DataAdapter
237
8.7.1 CommandBuilder verwenden
237
8.7.2 ConflictOption-Eigenschaft des CommandBuilders
239
8.8 Eigenschaften des DataAdapters
242
8.8.1 AcceptChanges...-Eigenschaften
242
8.8.2 Command-Eigenschaften
243
8.8.3 ContinueUpdateOnError-Eigenschaft
243
8.8.4 FillLoadOption-Eigenschaft
245
8.8.5 MissingSchemaAction-Eigenschaft
246
8.8.6 ReturnProviderSpecificTypes-Eigenschaft
247
8.8.7 TableMappings-Eigenschaft
247
8.8.8 MissingMappingAction-Eigenschaft
249
8.8.9 UpdateBatchSize-Eigenschaft
251
8.9 Methoden des DataAdapters
251
8.9.1 Die Fill-Methode
251
8.9.2 Die FillSchema-Methode
254
8.9.3 GetFillParameters-Methode
255
8.9.4 Die Update-Methode
255
8.10 Ereignisse
259
8.10.1 RowUpdating-Ereignis
259
8.10.2 RowUpdated-Ereignis
262
8.10.3 FillError-Ereignis
263
8.11 Zusammenfassung
263
9 Die Transaction-Klasse
264
9.1 Was ist eine Transaktion?
265
9.2 Objektmodell der Transaction
267
9.3 Das Beispielprogramm
268
9.4 Erzeugen des Transaction-Objekts
270
9.5 Verwendung der Transaction-Klasse
270
9.5.1 Verwendung mit Commands
270
9.5.2 Verwendung mit einem DataAdapter-Objekt
273
9.6 Eigenschaften
276
9.6.1 Die Connection-Eigenschaft
276
9.6.2 Die IsolationLevel-Eigenschaft
276
9.7 Methoden
280
9.7.1 Die Commit-Methode
280
9.7.2 Die Rollback-Methode
281
9.7.3 Weitere Methoden
281
9.8 Zusammenfassung
282
10 Die SqlBulkCopy-Klasse
284
10.1 Prinzip der SqlBulkCopy- Klasse
285
10.2 Erzeugen des SqlBulkCopy-Objekts
286
10.3 Die SqlBulkCopyOptions
287
10.4 Eigenschaften
288
10.4.1 BatchSize-Eigenschaft
288
10.4.2 BulkCopyTimeOut-Eigenschaft
288
10.4.3 ColumnMappings-Eigenschaft
289
10.4.4 DestinationTableName-Eigenschaft
289
10.4.5 NotifyAfter-Eigenschaft
290
10.5 WriteToServer-Methode
291
10.6 Das Beispielprogramm
292
10.6.1 Benutzeroberfläche
292
10.6.2 Programmaufbau
294
10.7 Verwendung der SqlBulkCopy-Klasse
296
10.7.1 Import einer DataTable ohne Transaktion
296
10.7.2 Import eines DataRow-Arrays mit interner Transaktion
298
10.7.3 Import eines DataReaders mit externer Transaktion
300
10.7.4 Vergleich mit dem DataAdapter
302
10.8 Zusammenfassung
303
11 Die DataTable-Klasse
304
11.1 Objektmodell der DataTable
305
11.2 Das Beispielprogramm
307
11.3 Erzeugen eines DataTable-Objekts
309
11.4 Verwendung des DataTable-Objekts
309
11.5 Rows- Auflistung
311
11.5.1 Verwendung der Rows-Auflistung
312
11.5.2 Die Count-Eigenschaft
313
11.5.3 Die Add-Methode
313
11.5.4 Die Contains-Methode
315
11.5.5 Die Find-Methode
316
11.5.6 Die Remove-Methode
317
11.5.7 Die Clear-Methode
319
11.6 Columns- Auflistung
319
11.6.1 Die Contains-Methode
320
11.6.2 Die Add- und Remove-Methode
320
11.6.3 Die Clear-Methode
322
11.6.4 Die IndexOf-Methode
322
11.7 Eigenschaften der DataTable
323
11.7.1 Auflistungen
323
11.7.2 Die PrimaryKey-Eigenschaft
325
11.7.3 DataSet
326
11.7.4 Die DefaultView-Eigenschaft
327
11.7.5 Weitere Eigenschaften
328
11.8 Methoden der DataTable
331
11.8.1 NewRow-Methode
331
11.8.2 ImportRow-Methode
332
11.8.3 LoadDataRow-Methode
332
11.8.4 ReadXml-, WriteXml-Methode
333
11.8.5 Accept- und RejectChanges-Methode
336
11.8.6 Compute-Methode
336
11.8.7 Select-Methode
338
11.8.8 Weitere Methoden
339
11.9 Ereignisse der DataTable
342
11.9.1 Das RowChanging-Ereignis
343
11.9.2 Weitere Ereignisse
344
11.10 Anwendungsfälle für die DataTable
345
11.10.1 Kalkulierte Spalten erzeugen
345
11.10.2 AutoIncrement-Spalten erzeugen
349
11.10.3 Datenzeilen auslesen
349
11.10.4 Spaltenwerte auslesen
351
11.10.5 DataTable an Steuerelement in Formularen binden
352
11.11 Zusammenfassung
358
12 Die DataRow-Klasse
360
12.1 Objektmodell der DataRow
361
12.2 Das Beispielprogramm
363
12.3 Erzeugen eines DataRow-Objekts
364
12.4 Spaltenwerte auslesen und setzen
365
12.5 Versionen eines DataRow-Objekts
367
12.6 Eigenschaften
370
12.6.1 Die RowState-Eigenschaft
370
12.6.2 Weitere Eigenschaften
371
12.7 Methoden
373
12.7.1 Die AcceptChanges- und RejectChanges-Methode
373
12.7.2 Die BeginEdit-, CancelEdit-, EndEdit-Methode
374
12.7.3 Die HasVersion-Methode
375
12.7.4 Die GetChildRows- und GetParentRow-Methode
376
12.7.5 Weitere Methoden
378
12.8 Versionen und die DataTable-Ereignisse
382
12.8.1 ColumnChanged-Ereignis
382
12.8.2 Weitere Ereignisse
388
12.9 Zusammenfassung
389
13 Die DataView-Klasse
390
13.1 Objektmodell der DataView
391
13.2 Das Beispielprogramm
392
13.3 Erzeugen eines DataView-Objekts
394
13.4 Daten lesen und schreiben
394
13.5 Eigenschaften
396
13.5.1 Die AllowDelete-, AllowEdit- und AllowNew-Eigenschaft
396
13.5.2 Die RowFilter-Eigenschaft
399
13.5.3 Die RowStateFilter-Eigenschaft
400
13.5.4 Die Sort-Eigenschaft
402
13.5.5 Weitere Eigenschaften
403
13.6 Methoden
405
13.6.1 Die AddNew-Methode
405
13.6.2 Die Find- und FindRows-Methode
407
13.6.3 Delete-Methode
408
13.6.4 ToTable-Methode
409
13.7 ListChanged-Ereignis
410
13.8 Die DataRowView-Klasse
411
13.8.1 Objektmodell der DataRowView
411
13.8.2 Eigenschaften der DataRowView
411
13.8.3 Methoden der DataRowView
413
13.9 Datenanbindung des DataView-Objekts
414
13.10 Datenanbindung des DataRowView-Objekts
418
13.11 Zusammenfassung
419
14 Die DataSet-Klasse
420
14.1 Objektmodell der DataSet-Klasse
422
14.2 Das Beispielprogramm
423
14.3 Erzeugen eines DataSet-Objekts
425
14.4 Eigenschaften des DataSets
426
14.5 Methoden des DataSets
429
14.6 Tabellen hinzufügen
434
14.6.1 Add-Methode der Tables-Auflistung
435
14.6.2 Fill-Methode des DataAdapters
436
14.7 Relationen
436
14.7.1 Was sind Relationen?
437
14.7.2 Objektmodell der DataRelation-Klasse
438
14.7.3 Eigenschaften der DataRelation-Klasse
440
14.7.4 Relationen erzeugen
441
14.7.5 Über Relationen auf Daten zugreifen
445
14.7.6 Objektmodell der ForeignKeyConstraint-Klasse
447
14.7.7 Eigenschaften der ForeignKeyConstraint-Klasse
447
14.8 DataSet mit Daten füllen
449
14.8.1 Über DataAdapter
449
14.8.2 ReadXml-Methode
450
14.9 Daten speichern
452
14.9.1 Über DataAdapter
452
14.9.2 WriteXml-Methode
453
14.10 Das abgeleitete Schema
455
14.10.1 Die Nested-Eigenschaft der DataRelation-Klasse
456
14.10.2 Das Schema
460
14.11 Serialisierung im Binärformat
462
14.12 Zusammenfassung
465
15 Datenbindung
468
15.1 Arten der Datenbindung
469
15.2 Klassen der Datenanbindung
470
15.3 Die Synchronisierung
473
15.4 Die BindingSource Klasse
476
15.4.1 BindingSource erzeugen
477
15.4.2 Datenbindungen anlegen
477
15.4.3 Die DataSource- und List-Eigenschaft
480
15.4.4 Die Position-Eigenschaft
481
15.4.5 Die Current-Eigenschaft
482
15.4.6 Weitere Eigenschaften
483
15.4.7 Methoden der BindingSource
484
15.4.8 Ereignisse der BindingSource
486
15.5 Die Binding-Klasse
489
15.5.1 Anlegen der Bindung
489
15.5.2 Eigenschaften der Binding-Klasse
490
15.5.3 Die ReadValue- und WriteValue-Methode
495
15.5.4 Das Format- und Parse-Ereignis
495
15.6 Datenquellen
496
15.7 Das Beispielprogramm
501
15.8 Standardprobleme
503
15.8.1 Angezeigte Daten und Funktionen
504
15.8.2 Entwurf des lokalen Datenspeichers
507
15.8.3 Lokale Datenbank erzeugen und füllen
509
15.8.4 Datenbindung
513
15.8.5 Datennavigation und Synchronisation
520
15.8.6 Filtern der lokalen Daten
521
15.8.7 Vorgabewerte setzen
524
15.8.8 Änderungen verwerfen
526
15.8.9 Änderungen speichern
531
15.9 Zusammenfassung
536
16 Typisiertes DataSet
538
16.1 Was ist ein typisiertes DataSet?
539
16.1.1 Logischer Aufbau
539
16.1.2 Typisierte Klassen
540
16.1.3 Vor- und Nachteile des typisierten DataSets
542
16.2 Erweiterungen der DataSet-Klassen
545
16.2.1 Erweiterung der DataSet-Klasse
545
16.2.2 Erweiterungen der DataTable-Klasse
545
16.2.3 Erweiterungen der DataRow-Klasse
547
16.3 Der TableAdapter
548
16.4 Das Beispielprogramm
551
16.5 Anlegen des typisierten DataSets
553
16.5.1 Typisiertes DataSet über Datenquellen-Fenster anlegen
554
16.5.2 Typisiertes DataSet direkt dem Projekt hinzufügen
556
16.5.3 Dateien des typisierten DataSets
557
16.6 Entwerfen des DataSets mit dem Editor
558
16.7 Modifizieren der TableAdapter
562
16.7.1 Der Abfrage-Generator
562
16.7.2 Konfigurieren des TableAdapters
564
16.8 Verwenden des typisierten DataSets im Formular
566
16.8.1 Instanzen der Objekte für die Bindung anlegen
567
16.8.2 Binden der BindingSources an die Datenquelle
568
16.8.3 Fehler im Formulardesigner
570
16.8.4 TableAdapter hinzufügen und Daten laden
571
16.8.5 Steuerelemente an BindingSources binden
573
16.9 Nachträgliche Änderungen am DataSet
578
16.9.1 Änderungen an der Datenbank
578
16.9.2 Änderungen am typisierten DataSet
580
16.10 Ein Blick auf den Programmcode
581
16.11 Fazit
584
17 XML und XML-Schemata
586
17.1 Das Beispielformular
587
17.2 XML-Grundlagen
589
17.3 XML-Syntax
592
17.4 XML-Elemente und Typen
595
17.4.1 XML-Deklaration
595
17.4.2 Element
595
17.4.3 Attribute
596
17.4.4 Typen
598
17.4.5 Benannte und unbenannte Typen
599
17.4.6 Namespace
602
17.5 DataSet verwendet XML-Daten
604
17.5.1 Der Schema-Editor
604
17.5.2 Anlegen des Schemas über den DataSet-Editor
605
17.5.3 Laden des Schemas und der XML-Datei
608
17.5.4 Benutzereinstellungen in XML-Datei speichern
610
17.5.5 Lesen und schreiben der Benutzereinstellungen
611
17.5.6 Komplexe Benutzereinstellung
613
17.6 XML-Daten verwenden ein DataSet
617
17.7 Datenaustausch über DiffGrams
624
17.7.1 DiffGram-Format
625
17.7.2 DataSet als DiffGram speichern
629
17.7.3 DataSet von DiffGram füllen
630
17.8 SQL Server und FOR XML- Abfragen
631
17.8.1 Anzeigen der XML-Ausgabe
631
17.8.2 FOR XML RAW
633
17.8.3 FOR XML AUTO
634
17.8.4 FOR XML EXPLICIT
639
17.8.5 FOR XML PATH
642
17.8.6 Verwendung von FOR XML mit XMLReader
646
17.8.7 Verwendung von FOR XML mit DataSets
649
17.9 Zusammenfassung
653
18 Die Webdienste
654
18.1 Prinzip des Webdienstes
655
18.2 Die Infrastruktur für Webdienste
658
18.2.1 Webdienstverzeichnisse
658
18.2.2 Homepage des Dienstanbieters
660
18.2.3 Web Service Description Language
661
18.3 Webdienst erstellen
661
18.3.1 Neues Projekt anlegen
661
18.3.2 Funktionalität implementieren
664
18.3.3 Testen des Webdienstes
670
18.4 Webdienstclient erstellen
674
18.4.1 Projekt erstellen
674
18.4.2 Funktionalität implementieren
677
18.4.3 Testen des Webdienstclients
681
18.5 Asynchroner Methodenaufruf
682
18.5.1 Grundlagen
683
18.5.2 Der asynchrone Methodenaufruf
683
18.6 Datenübertragung im Binärformat
687
18.7 Zusammenfassung
691
19 ASP-Grundlagen
692
19.1 Einführung in ASP.NET
693
19.2 Installation von ASP.NET
696
19.2.1 Software-Anforderungen
697
19.2.2 Installation des IIS
697
19.2.3 ASP.NET dem IIS bekannt machen
703
19.2.4 Beispielanwendungen
707
19.3 Die erste ASP.NET- Anwendung
710
19.3.1 Erstellen einer neuen Webanwendung
711
19.3.2 Hinzufügen der Controls
715
19.3.3 Dokumentgliederung
720
19.3.4 Hinzufügen des Codes für die Buttons
722
19.4 Der Namespace System.Web
723
19.5 Das GridView-Control
726
19.5.1 Erstellen der Anwendung
726
19.5.2 Hinzufügen einer Datenquelle
728
19.5.3 Anbinden des GridViews an eine Access-Datenbank
729
19.5.4 Blättern, Sortieren und Layout
732
19.5.5 Ändern von Datensätzen
735
19.6 Zusammenfassung
738
20 Sicherheit von Webapplikationen
740
20.1 Grundbegriffe
741
20.2 Ein einfaches Beispiel
745
20.2.1 Die fertige Anwendung
745
20.2.2 Erstellen einer neuen Anwendung
746
20.2.3 Erstellen der Benutzeroberfläche
746
20.2.4 Der Code
749
20.3 Wahl der Sicherheitsstrategie
753
20.3.1 Änderung der ASPNET-Berechtigungen
754
20.3.2 Änderung der ACLs
756
20.3.3 Impersonation
759
20.3.4 Zusammenfassung
764
21 ASP.NET und ADO.NET
766
21.1 Die fertige Anwendung
767
21.2 Erstellen der Reservierungsseite
769
21.2.1 Vorbereitende Maßnahmen
769
21.2.2 Hinzufügen der Controls
770
21.2.3 Programmcode
773
21.3 Erstellen der Ergebnisseite
777
21.3.1 Hinzufügen einer neuen Web Form
777
21.3.2 Erstellen der Benutzeroberfläche
778
21.3.3 Programmatischer Wechsel zur Ergebnisseite
780
21.3.4 Code zur Durchführung einer Reservierung
781
21.3.5 Code zur Ausgabe der Belegungsdaten
784
21.4 Zusammenfassung
789
Index
790