lehrerbibliothek.deDatenschutzerklärung
Datenbankprogrammierung mit Visual C# .NET  Grundlagen, Rezepte und Anwendungsbeispiele zur Datenbank- und Webprogrammierung mit Visual C# .NET und Visual Studio .NET 2002 oder 2003

mit CD-ROM
Datenbankprogrammierung mit Visual C# .NET


Grundlagen, Rezepte und Anwendungsbeispiele zur Datenbank- und Webprogrammierung mit Visual C# .NET und Visual Studio .NET 2002 oder 2003



mit CD-ROM

Walter Doberenz, Thomas Kowalski

Microsoft Press
EAN: 9783860630952 (ISBN: 3-86063-095-4)
680 Seiten, kartoniert, 19 x 24cm, August, 2003

EUR 39,90
alle Angaben ohne Gewähr

Umschlagtext
• Visual C# .NET, ADO.NET, ASP.NET und XML-Webdienste

• Anwendungsbereite Lösungen für Web- und Windowsanwendungen

• Mit Beispielcode für Visual Studio .NET Version 2002 und 2003 auf CD





Mit Einführung von Microsofts neuer .NET-Technologie ist auch ein neues Zeitalter der Datenbank- und Internetprogrammierung mit atemberaubenden Möglichkeiten angebrochen. Visual C# .NET ist die extra für.Net entwickelte Sprache, die Ihnen die Möglichkeiten und die Flexibilität von C++ bietet und trotzdem eine schnelle und unkomplizierte Programmierpraxis wie Visual Basic erlaubt. Deshalb lassen sich mit Visual C# .NET mit wenig Aufwand leistungsfähige und skalierbare Datenbankanwendungen erstellen. Dieses Buch eignet sich als ein Leitfaden für Datenbankprogrammierungs-Einsteiger und als Nachschlagewerk für Fortgeschrittene, wobei immer der praktische Nutzen im Vordergrund steht. Dem Einsteigerwerden nach dem Prinzip »soviel wie nötig« die erforderlichen theoretischen Grundkenntnisse klar und verständlich vermittelt, der Profi findet hier eine umfassende Nachschlagemöglichkeit für die vielfältigen Konzepte der Datenbankprogrammierung unter .NET und Antworten auf Fragen, nach denen er bislang vergeblich gesucht hat. Mit diesem Ansatz stellt dieses Buch ohne unnötigen Ballast die Informationen zur Verfügung, die Sie brauchen, um schnell zu Ergebnissen zu kommen und spart Ihnen durch eine Vielzahl von universell verwendbaren Routinen und Rezepten eine Menge Zeit und Nerven bei der Entwicklung Ihrer Datenbanklösungen.





Lesen Sie:



• Einführung in die neuen Möglichkeiten der Datenbank- und Web-Programmierung mit Visual C# .NET

• Arbeiten mit Binärdateien, Textdateien und XML-Dateien

• Datenbankzugriff mit ADO.NET

• Datenbindung von Steuerelementen

• Datenbankberichte mit Crystal Report

• Ausführliche Einführung in SQL

• Arbeiten mit Access-Datenbanken

• MSDE und Microsoft SQL Server

• Web-Anwendungen mit ASP.NET

• Internetprogrammierung mit XML-Webdiensten

• Komplexbeispiel einer Warenkorb-Applikation

• Zahlreiche How-to-Problemlösungen





Auf Begleit-CD:



• Beispielcode für Visual Studio .NET Version 2002 und 2003

• .NET FrameworkSDK Version 1.1





Die Autoren:



Walter Doberenz und Thomas Kowalski sind die Autoren mehrerer erfolgreicher Bücher zur Programmierung mit Visual Basic. Bei Microsoft Press sind von ihnen unter anderem bereits die Bücher Datenbankprogrammierung mit Visual Basic 6 und Microsoft Access 2002 Programmierung erschienen.






Inhaltsverzeichnis
Inhaltsverzeichnis

Vorwort XIX

Ein praxisorientiertes Buch für Einsteiger und Fortgeschrittene XIX
Ideal auch für Visual Basic Umsteiger XX
Inhalt der Buch-CD-ROM XX
Zu den Autoren XXI
Danksagungen XXI


1 Einführung 1

1.1 Unsere Werkstatt 1
1.1.1 Betriebssystem 2
1.1.2 Internet Information Server 2
1.1.3 Installation von Visual Studio .NET 3
1.1.4 Installation der MSDE 3
1.1.5 Weitere Programme 4
1.2 Einführungsbeispiele 4
1.2.1 Zugriff auf lokale Access-Datenbank 5
1.2.2 Anwendung für Microsoft SQL Server 10
1.2.3 ASP.NET-Webanwendung 12
1.2.4 ASP.NET-Webdienst 17
1.2.5 Webdienst-Client 21
1.3 C# .NET und die Datenbankprogrammierung 23
1.3.1 Zur Geschichte des universellen Datenzugriffs 24
1.3.2 Die neuen Merkmale webbasierter Anwendungen 24
1.3.3 Raus aus der DLL-Hölle ! 27
1.3.4 Ein Wort zum .NET-Sicherheitskonzept 28
1.4 Ein wenig Datenbanktheorie 29
1.4.1 Normalisieren von Tabellen 30
1.4.2 Verknüpfen von Tabelle 34
1.4.3 Operationen mit Tabellen 38
1.4.4 Weitere wichtige Begriffe 42


2 Dateien/ XML 45

2.1 Operationen mit Verzeichnissen und Dateien 45
2.1.1 Das Datei-System von Windows 45
2.1.2 Klassen für Verzeichnis- und Dateioperationen 46
2.1.3 Verzeichnisse erzeugen und löschen 47
2.1.4 Verzeichnisse verschieben und umbenennen 47
2.1.5 Aktuelles Verzeichnis ermitteln bzw. festlegen 48
2.1.6 Unterverzeichnisse feststellen 48
2.1.7 Enthaltene Dateien ermitteln 48
2.1.8 Dateien kopieren, verschieben und umbenennen 49
2.1.9 Dateiattribute feststellen 49
2.1.10 Weitere Eigenschaften und Methoden 51
2.1.11 Anwendung der Path-Klasse 52
2.1.12 Änderungen im Dateisystem überwachen 52
2.2 Lese- und Schreibzugriff auf Dateien 54
2.2.1 Übersicht 54
2.2.2 Erzeugen einer Stream-Instanz
2.2.3 Dateiparameter 55
2.2.4 Textdateien 57
2.2.5 Binärdateien 58
2.2.6 Sequenzielle Dateien 59
2.3 XML - etwas Theorie 60
2.3.1 Übersicht 60
2.3.2 Der XML-Grundaufbau 62
2.3.3 Wohlgeformte Dokumente 64
2.3.4 Processing Instructions (PI) 65
2.3.5 Elemente und Attribute 66
2.4 XSD-Schemas 68
2.4.1 XSD-Schemas und ADO.NET 68
2.4.2 XSD-Schema in Visual Studio .NET erstellen 69
2.4.3 XML-Datei mit XSD-Schema erzeugen 72
2.5 Verwendung des DOM unter .NET 73
2.5.1 Übersicht 73
2.5.2 DOM-Integration in C# .NET 74
2.5.3 Laden von Dokumenten 74
2.5.4 Erzeugen von XML-Dokumenten 75
2.5.5 Auslesen von XML-Dateien 77
2.5.6 Direktzugriff auf einzelne Elemente 78
2.5.7 Einfügen von Informationen 78
2.5.8 Suchen in den Baumzweigen 80
2.5.9 Die relationale Sicht auf XML-Daten 83


3 Einführung in ADO.NET 87

3.1 Die wichtigsten Klassen in ADO.NET 87
3.1.1 Klassenhierarchie 87
3.1.2 Die Klassen der Datenprovider 89
3.1.3 Die Klassen im DataSet 90
3.1.4 Das Zusammenspiel der ADO.NET-Klassen 91
3.2 Das Connection-Objekt 92
3.2.1 Allgemeiner Aufbau 92
3.2.2 OleDbConnection 92
3.2.3 SQLConnection 94
3.2.4 Fehlerbehandlung beim Öffnen einer Verbindung 96
3.2.5 Schließen einer Verbindung 97
3.2.6 Verbindungspooling 97
3.2.7 Transaktionen 97
3.2.8 Eigenschaften und Methoden des Connection-Objekts 98
3.2.9 Ereignisse des Connection-Objekts 101
3.3 Das Command-Objekt 102
3.3.1 Erzeugen und Anwenden eines Command-Objekts 102
3.3.2 Erzeugen mittels CreateCommand-Methode 103
3.3.3 Eigenschaften und Methoden 103
3.3.4 Parameter-Objekte 106
3.4 Das DataReader-Objekt 108
3.4.1 DataReader erzeugen 109
3.4.2 Daten lesen 109
3.4.3 Eigenschaften und Methoden 110
3.5 Das DataAdapter-Objekt 110
3.5.1 DataAdapter erzeugen 111
3.5.2 Command-Eigenschaften 111
3.5.3 Fill-Methode 112
3.5.4 Update-Methode 113
3.5.5 UpdateCommand und Parameter-Objekte 114
3.5.6 InsertCommand und DeleteCommand 115
3.5.7 RowUpdating- und RowUpdated-Ereignis 117
3.6 Das CommandBuilder-Objekt 119
3.6.1 Erzeugen 119
3.6.2 Anwenden 120
3.6.3 Einsatzbeschränkungen 120
3.6.4 Einige Regeln 121
3.7 Übersichten 121
3.7.1 Datentypen 121
3.7.2 Connection-Objekt 122
3.7.3 Command-Objekt 123
3.7.4 Parameter-Objekt 123
3.7.5 DataReader-Objekt 124
3.7.6 DataAdapter 125
3.7.7 CommandBuilder 126


4 Das DataSet-Objekt 127

4.1 Einführung 127
4.1.1 Das Objektmodell 128
4.1.2 Methoden zum Erzeugen eines DataSets 129
4.2 Das DataTable-Objekt 131
4.2.1 DataTable erzeugen 131
4.2.2 Spalten hinzufügen 132
4.2.3 Primärschlüssel ergänzen 132
4.2.4 Berechnete Spalten einfügen 133
4.2.5 Einbinden von Constraints 133
4.2.6 Hinzufügen von Relationen 135
4.2.7 Zeilen zur DataTable hinzufügen 137
4.2.8 Auf den Inhalt einer DataTable zugreifen 138
4.2.9 Weitere Hinweise zum Bearbeiten von Zeilen 141
4.2.10 Zeilen löschen 142
4.2.11 Zeilenstatus und Zeilenversion 143
4.2.12 Ereignisse des DataTable-Objekts 146
4.3 Datenansichten mit DataView 147
4.3.1 Erzeugen eines DataView 147
4.3.2 Sortieren und Filtern von Datensätzen 148
4.3.3 Suchen von Datensätzen 149
4.3.4 Zeilenansicht mit DataRowView 149
4.4 Datenanbindung von Steuerelementen 151
4.4.1 DataGrid anbinden 151
4.4.2 Einfache Steuerelemente anbinden 152
4.4.3 Navigieren mit BindingManagerBase 153
4.4.4 Die Anzeige formatieren 154
4.4.5 Datenanbindung von ComboBox und ListBox 154
4.5 Weitere DataSet-Features 155
4.5.1 Die XML-Fähigkeiten des DataSet 155
4.5.2 Typisierte DataSets 158
4.6 Übersichten 159
4.6.1 DataSet 159
4.6.2 DataTable 160
4.6.3 DataColumn 162
4.6.4 DataRow 162
4.6.5 DataView 163


5 Crystal Report 165

5.1 Übersicht 165
5.1.1 Der Report-Designer 166
5.1.2 Der Reportaulbau 167
5.1.3 Die Druckvorschau-Komponente 168
5.1.4 Wichtige Funktionen im Überblick 169
5.1.5 Weitere Komponenten 173
5.1.6 Das Ereignis-Modell 174
5.2 Reports entwerfen 175
5.2.1 Wer sucht, der findet... 175
5.2.2 Ein erster Crystal Report 176
5.2.3 Sortieren und Gruppieren 179
5.2.4 Verwenden von Parameterfeldern 183
5.2.5 Berechnungen im Report 185
5.2.6 Gestalten mit bedingter Formatierung 187
5.2.7 Kreuztabellenberichte 189
5.3 Programmieren der Druckvorschau 192
5.3.1 Der CrystalReportViewer im Überblick 192
5.3.2 Wichtige Eigenschaften, Methoden und Ereignisse 193
5.4 Ausgabe auf dem Drucker 195
5.4.1 Die Lizenz zum Drucken 195
5.4.2 Druckerauswahl und Konfiguration 195
5.4.3 Drucken mit Druckerdialog 196
5.5 Exportieren von Reports 197
5.5.1 Bestimmen des Exportformats 197
5.5.2 Export als Datei 198
5.5.3 Export als E-Mail 199
5.6 Crystal Report im Web 200
5.6.1 Das ASP.NET-Projekt 200
5.6.2 Herstellen der Datenbindung 201
5.6.3 Integrieren des Reports 202
5.6.4 Probleme mit der Sicherheit 203
5.7 Tipps & Tricks 204
5.7.1 Ein Deckblatt erzeugen 204
5.7.2 Seitenzahlen, Druckdatum etc. einblenden 204
5.7.3 Die Seitenränder festlegen 205
5.7.4 Einen Seitenumbruch erzwingen 205
5.7.5 Die Position und Größe der Druckvorschau vorgeben 206
5.7.6 Einbetten des Reports in die Applikation 206
5.7.7 Querdruck auswählen 207
5.7.8 Ausgabe von RTF-Text 207
5.7.9 Summe, Anzahl, Mittelwerte etc. berechnen 207
5.7.10 Reportauswahl zur Laufzeit 208
5.7.11 Farbliche und optische Formatierungen 209
5.7.12 So ändern Sie das Layout eines Berichts 209
5.7.13 Datenbankpfad zur Laufzeit anpassen 209
5.7.14 Ändern der Login-Informationen zur Laufzeit 210


6 SQL-Programmierung 211

6.1 Einführung 211
6.1.1 SQL-Dialekte 212
6.1.2 Kategorien von SQL-Anweisungen 212
6.2 Testprogramm und Beispieldatenbank 214
6.2.1 Hinweise zur Bedienung 214
6.2.2 Die Beispieldatenbank im Überblick 214
6.2.3 Alternative Varianten für die SQL-Abfrage 215
6.2.4 Bemerkungen 220
6.3 Daten abfragen 220
6.3.1 Abfragen mit SELECT 220
6.3.2 Alle Spalten auswählen 221
6.3.3 Auswahl der Spalten 222
6.3.4 Filtern 223
6.3.5 Beschränken der Ergebnismenge 229
6.3.6 Eindeutige Records/doppelte Datensätze 229
6.3.7 Tabellen verknüpfen 230
6.3.8 Tabellen vereinigen 233
6.3.9 Sortieren 234
6.3.10 Gruppieren 234
6.3.11 Unterabfragen 236
6.4 Daten manipulieren 240
6.4.1 Einfügen einzelner Datensätze 241
6.4.2 Einfügen von Abfragedaten 242
6.4.3 Exportieren/Importieren von Abfragedaten 244
6.4.4 Aktualisieren/Ändern 246
6.4.5 Löschen 247
6.5 Erweiterte SQL-Funktionen 248
6.5.1 Berechnete/Formatierte Spalten 248
6.5.2 Berechnungsfunktionen 254
6.5.3 NULL-Werte 255
6.5.4 Datum und Zeit in SQL-Abfragen 257
6.5.5 Datentypumwandlungen 261
6.5.6 Kreuztabellenabfragen 262
6.6 Datenbankverwaltung mit SQL (DDL) 264
6.6.1 Datenbanken 265
6.6.2 Tabellen 265
6.6.3 Indizes 266
6.6.4 Tabellen/Indizes löschen oder verändern 268
6.6.5 Sichten (Views) 269
6.6.6 Nutzer- und Rechteverwaltung 270
6.7 Optimieren 273
6.7.1 Indizes 274
6.7.2 Abfrageoptimierung 274
6.7.3 Weitere Möglichkeiten 275
6.8 SQL in der C# .NET-Praxis 275
6.8.1 Ausführen oder Abfragen? 275
6.8.2 Einfügen von Strings zur Laufzeit 277
6.8.3 Datumseingabe 278
6.8.4 Parameterübergabe 278
6.9 Tipps & Tricks 281
6.9.1 Wie kann ich nach einem INSERT das Zählerfeld abfragen? 281
6.9.2 Wie kann ich die Anzahl der Datensätze ermitteln? 281
6.9.3 Wie gebe ich ein Datum in eine SQL-Anweisung ein? 282
6.9.4 Wie nutze ich Datumsteile in SQL zur Suche? 282
6.9.5 Wie kann ich die Groß-/Kleinschreibung berücksichtigen? 283
6.9.6 Suchen ohne Rücksicht auf Groß-/Kleinschreibung? 283
6.9.7 Was bedeutet WITH OWNERACCESS OPTION? 284
6.9.8 Warum erhalte ich zu viele Datensätze beim Verknüpfen? 284
6.9.9 Wie lösche ich doppelte Datensätze aus einer Tabelle? 285
6.9.10 Wo ist die IFF-Funktion? 286
6.9.11 Wo finde ich weitere Informationen zu Jet-SQL? 287
6.10 Übersichten 287
6.10.1 Die wichtigsten SQL-Befehle 287
6.10.2 Unterschiede ANSI-SQL und Access-SQL 288


7 Verwalten von Access-Datenbanken mit C# .NET 289

7.1 Ein erster Blick auf MS Access-Datenbanken 289
7.1.1 Warum Access? 290
7.1.2 Access-Datentypen 290
7.1.3 Beschränkungen 291
7.2 Zugriff aus C# .NET 292
7.2.1 Warum nicht nur ADO.NET? 292
7.2.2 Die ADOX-Library 293
7.2.3 Die JRO-Library 294
7.2.4 ADO MD 294
7.2.5 Einbinden von ADOX und JRO in C# .NET 296
7.2.6 Parameter für ADO.NET-ConnectionStrings 296
7.2.7 Access-Datenbankpasswort 297
7.2.8 Access-Datenbanksicherheit (Benutzer-/Gruppenebene) 298
7.2.9 Datenbankzugriff auf schreibgeschützte Medien (CD, DVD) 298
7.3 Datenbanken erstellen 298
7.3.1 Die Create-Methode 299
7.3.2 Weitere Parameter 299
7.3.3 Jet-spezifische Optionen 299
7.4 Tabellen/Indizes erstellen/verwalten 301
7.4.1 Tabellendefinition 301
7.4.2 Indexdefinition 306
7.4.3 Erstellen von Prozeduren und Sichten 308
7.4.4 Tabellen verknüpfen (Relationen) 308
7.5 Zugriffsschutz in Access-Datenbanken 310
7.5.1 Grundlagen 310
7.5.2 Sichern auf Datenbankebene 311
7.5.3 Erstellen neuer Benutzer und Gruppen 312
7.5.4 Vergabe von Rechten 313
7.5.5 Verschlüsseln von Datenbanken 315
7.6 Einbinden externer Tabellen 316
7.6.1 Erstellen einer Verbindung 317
7.6.2 Aktualisieren einer Verbindung 318
7.6.3 Löschen einer Verbindung 319
7.7 Replizieren von Datenbanken 319
7.7.1 Begriffe 319
7.7.2 Aufbau einer Replikatgruppe 320
7.7.3 Probleme bei Replikationen 320
7.7.4 Vorbereitungen zur praktischen Umsetzung 320
7.7.5 Replikat erstellen 321
7.7.6 Abgleich von Kopie und Original 322
7.8 Datenbankanalyse 323
7.8.1 Datenbankeigenschaften 323
7.8.2 Tabellen 324
7.8.3 Sichten/Abfragen 326
7.8.4 Nutzer und Nutzergruppen 329
7.8.5 Nutzer- und Gruppenberechtigungen 331
7.9 Weitere Aufgabenstellungen 333
7.9.1 Access-Datenbanken reparieren/komprimieren 333
7.9.2 Distribution von Access-Datenbanken 333
7.10 Tipps & Tricks 334
7.10.1 Wie prüft man die ADO-Versionsnummer? 334
7.10.2 Wo findet man die neuesten ADO-Versionen? 334
7.10.3 Wie installiere ich ADO? 334
7.10.4 Access-Datenbanken exklusiv öffnen 335
7.10.5 Zugriffsgeschwindigkeit auf Access-Datenbanken erhöhen 335
7.10.6 Access-Datenbanken im Netzwerk 335
7.10.7 Alle aktiven Verbindungen zur Datenbank auflisten 335
7.10.8 Spalte mit eindeutigen Zufallswerten erzeugen 336
7.10.9 Datenbank-Kennwort ändern 336
7.10.10 Abfragen über mehrere Datenbanken 337
7.10.11 Beschreibung von Datenbankfeldern abrufen 337


8 Microsoft SQL Server 339

8.1 Übersicht 339
8.1.1 Was ist die MSDE/SQL Server Desktop Engine? 339
8.1.2 Unterschiede MSDE/MS SQL Server/Jet-Engine 340
8.1.3 Die wichtigsten Tools des SQL Servers 341
8.1.4 Vordefinierte Datenbanken 342
8.1.5 Einschränkungen 342
8.1.6 Zugriff aus C# .NET 343
8.2 Die Sprache des SQL Servers: Transact-SQL 345
8.2.1 Schreibweise 346
8.2.2 Kommentare 346
8.2.3 Deklaration/Verwendung von Variablen 346
8.2.4 Bedingungen mit IF/ELSE auswerten 347
8.2.5 Verwenden von CASE 348
8.2.6 Verwenden von WHILE...BREAK/CONTINUE 348
8.2.7 Verwenden von GOTO 349
8.2.8 Fehlerbehandlung 349
8.3 Datenbanken verwalten mit DMO 349
8.3.1 Installation 350
8.3.2 Einführungsbeispiel 350
8.4 Praktisches Arbeiten mit dem SQL Server 352
8.4.1 Erstellen von SQL Server-Datenbanken 352
8.4.2 Erzeugen und Verwalten von Tabellen 354
8.4.3 Datenbankdiagramme 358
8.4.4 Erzeugen und Verwenden von Sichten (Views) 360
8.4.5 Verwendung von gespeicherten Prozeduren 361
8.4.6 Programmierung/Verwendung von Triggern 365
8.4.7 Volltextabfragen 368
8.5 Fehlerbehandlung 372
8.5.1 Das Fehlermodell des SQL Servers 372
8.5.2 Verwenden von @@ERROR 373
8.5.3 Verwenden von RAISEERROR 373
8.5.4 Fehlerbehandlung mit ADO.NET 374
8.6 Datensicherheit auf dem Microsoft SQL Server 375
8.6.1 Überblick 375
8.6.2 Verwalten mit dem Enterprise-Manager 378
8.6.3 Verwalten mit TSQL 381
8.7 XML-Unterstützung 384
8.7.1 Einrichten des Servers 384
8.7.2 Abfragen mit dem Internet Explorer 385
8.7.3 Abfragen mit C# 389
8.8 Tipps & Tricks 390
8.8.1 Alle Nutzer einer Datenbank ermitteln 390
8.8.2 Alle registrierten Microsoft SQL Server ermitteln 390
8.8.3 Alle Datenbanken und deren Tabellen ermitteln 391
8 8.4 Eine Tabelle löschen 392
8.8.5 Eine Tabelle mit den DM0 erzeugen 392
8 8.6 Anzahl der Datensätze beschränken 393
8.8.7 Platzhalterzeichen in TSQL 393
8 8.8 Leerzeichen entfernen 394
8.8.9 Teilstrings erzeugen 394
8.8.10 Die MSDE administrieren 394
8.8.11 Lassen sich MSDE und SQL Server gleichzeitig installieren? 395
8.8.12 Kann ich mit der MSDE die Volltextsuche nutzen? 395
8.8.13 Mit der MSDE ein Backup/Restore realisieren 395
8.8.14 Lässt sich mit DROP INDEX jeder Index löschen? 396
8.8.15 Warum wird @@ERROR nicht korrekt verarbeitet? 396
8.8.16 Die Anzahl der Datensätze einer Abfrage bestimmen 396
8.8.17 Kann man IFF ersetzen? 396
8 8.18 Mit Bedingungen Feldinhalte formatieren 397
8.8.19 Warum sind Abfragen mit Platzhaltern so langsam? 398
8.8.20 Groß-/Kleinschreibung berücksichtigen 398
8.8.21 Das Ergebnis einer Stored Procedure speichern 398
8 8.22 Eine Datenbank umbenennen 399
8.8.23 Eine Datenbank zwischen Servern verschieben 399
8 8.24 Nach dem Löschen IDENTITY auf 0 setzen 400
8 8.25 Datenbankstruktur kopieren 400
8.8.26 Eine Tabellenspalte umbenennen 402
8 8.27 Aktualisierungs- und Löschweitergaben realisieren 402
8.8.28 Kein ORDER BY in Views? 402
8 8.29 Änderungen in Tabellen protokollieren 402
8.8.30 Die Unterschiede zwischen temporären Tabellen 403
8.8.31 SQL-Anweisungen debuggen 403
8.8.32 Daten aus verschiedenen Datenbanken anzeigen 404
8.8.33 Kann man die PRINT-Anweisung in C# .NET anzeigen? 405
8.9 Übersichten 405
8.9.1 Datentypen 405
8.9.2 Unterschiede Access- und SQL Server-Datentypen 406


9 Webbasierte Anwendungen 407

9.1 ASP.NET - eine Übersicht 407
9.1.1 ASP - ein kurzer Rückblick 407
9.1.2 Was ist nun ASP.NET? 408
9.1.3 Vorteile von ASP.NET gegenüber ASP 410
9.1.4 Wichtige Voraussetzungen für den ASP.NET-Einsatz 411
9.1.5 Und was hat das alles mit C# zu tun? 411
9.2 Einführungsbeispiel 413
9.2.1 Erstellen des Projekts 413
9.2.2 Oberflächengestaltung 415
9.2.3 Ereignisprogrammierung 417
9.2.4 Ausgaben in einer Tabelle 417
9.2.5 Ereignisse von Textboxen 422
9.3 Übersicht ASP.NET-Objekte 423
9.3.1 Session 423
9.3.2 Application 424
9.3.3 Page 425
9.3.4 Request 427
9.3.5 Response 429
9.4 Datenbindung und ASP.NET 433
9.4.1 Verknüpfen mit der Datenbank 433
9.4.2 DataSet generieren 434
9.4.3 Verwenden der Web-Controls 434
9.4.4 Hinter den Kulissen 435
9.5 Fehlerbehandlung 436
9.5.1 Fehler beim Entwurf 436
9.5.2 Laufzeitfehler 437
9.5.3 Eine eigene Fehlerseite 438
9.5.4 Fehlerbehandlung im WebForm 439
9.5.5 Fehlerbehandlung in der Anwendung 440
9.5.6 Lokale Fehlerbehandlung 441
9.6 Übersicht 441


10 XML-Webdienste 443

10.1 Grundlagen 443
10.1.1 Wozu braucht man einen Webdienst? 444
10.1.2 Was versteht man unter SOAP? 444
10.1.3 WSDL - noch eine Sprache? 444
10.1.4 Wozu dient das DISCO-Dokument? 445
10.1.5 Wie funktioniert ein Webdienst? 445
10.1.6 Darf ich meine lokalen Klassen weiter verwenden? 447
10.1.7 Was ist mit der Kompatibilität? 447
10.2 Ein Webdienst im Detail 448
10.2.1 Aufgabenstellung 448
10.2.2 Webdienst-Projekt eröffnen 448
10.2.3 Die Projektdateien 448
10.2.4 Ihr Quellcode 451
10.2.5 Webdienst testen 453
10.2.6 Bemerkungen 457
10.3 Ein Webdienstclient im Detail 457
10.3.1 Aufgabenstellung 457
10.3.2 Webdienstclient-Projekt eröffnen 457
10.3.3 Webverweis hinzufügen 458
10.3.4 Die Projektdateien 458
10.3.5 Ihr Quellcode 460
10.3.6 Webdienstclient testen 462
10.3.7 Bemerkungen 463
10.4 Web-Methoden asynchron abrufen 463
10.4.1 Synchrone und asynchrone Methoden 463
10.4.2 Bedienoberfläche für Testclient 463
10.4.3 Quellcode für Testclient 464
10.4.4 Client testen 465
10.4.5 Bemerkungen 466
10.5 Probleme mit Zugriffsrechten 467
10.5.1 Fehlende Schreibrechte bei Access-Datenbanken 467
10.5.2 Benutzer ASPNET hinzufügen 467
10.5.3 Impersonalien 469
10.5.4 Fehler beim Aufrufen einer WebService-Methode 469
10.6 Sicherheit von Webdiensten 470
10.6.1 Digitale Signatur von SOAP-Nachrichten 471
10.6.2 Verschlüsseln von SOAP-Nachrichten 471
10.7 Tipps & Tricks 472
10.7.1 Änderungen im DataGrid rückgängig machen 472
10.7.2 Webverweis aktualisieren 472


11 Komplexbeispiel Warenkorb 473

11.1 Kunden-Tabelle 474
11.1.1 Bedienoberfläche 474
11.1.2 Datenadapter und Datenbankverbindung 475
11.1.3 Typisiertes DataSet hinzufügen 476
11.1.4 Klassencode und Schemadatei 477
11.1.5 Steuerelemente anbinden 479
11.1.6 Zwischentest 479
11.1.7 Navigationsfähigkeiten ergänzen 479
11.1.8 Abschluss der ersten Etappe 481
11.2 Bestellungen-Tabelle 483
11.2.1 Bedienoberfläche und datenspezifische Objekte 483
11.2.2 Der Quellcode kann kopiert werden 484
11.2.3 Abschluss der zweiten Etappe 485
11.3 Bestelldetails-Tabelle 485
11.3.1 Bedienoberfläche 485
11.3.2 Ein neuer DataAdapter muss her! 486
11.3.3 Typisiertes DataSet erweitern 486
11.3.4 Tabellen verknüpfen 487
11.3.5 DataGrid anbinden 488
11.3.6 Quellcode 488
11.3.7 Zwischentest 490
11.3.8 Nettopreis der Bestellung ermitteln 490
11.3.9 Abschluss der dritten Etappe 491
11.4 Produkte-Tabelle 493
11.4.1 Bedienoberfläche 493
11.4.2 Quellcode-Ergänzungen für Form2 493
11.4.3 Quellcode für Form3 495
11.4.4 Zwischentest 496
11.4.5 BestellDetails und Produkte mit ComboBox verbinden 496
11.4.6 Einzelpreis eintragen 498
11.4.7 Abschluss der vierten Etappe 498
11.5 Datengebundene Formatierungen 500
11.5.1 Bedienoberfläche 500
11.5.2 Formatieren des Eingangsdatums 500
11.5.3 Formatieren der Währung 501
11.5.4 Formatieren der Spalten des DataGrid 501
11.5.5 Abschluss der fünften Etappe 503
11.6 Rechnung mit Crystal Report drucken 503
11.6.1 Datenbasis anpassen 503
11.6.2 Report erzeugen 503
11.6.3 Festlegen der Datenquelle 504
11.6.4 Anpassen der Relationen 505
11.6.5 Berechnungen im Report durchführen 506
11.6.6 Auswahl der gewünschten Datensätze 507
11.6.7 Reportdesign 508
11.6.8 Druckvorschaufenster entwerfen 509
11.6.9 Zuweisen der Daten und Übergabe der Parameter 510
11.6.10 Aufruf des Reports 510
11.6.11 Die fertige Rechnung 511


12 How-to 513

12.1 Wie kann ich ... (Dateien/XML) 513
12.1.1 ... Datei-Infos gewinnen? 513
12.1.2 ... Verzeichnis- und Datei-Informationen ermitteln? 515
12.1.3 ... auf eine Textdatei zugreifen? 519
12.1.4 ... byteweise lesen und schreiben? 520
12.1.5 ... eine sequenzielle Datei lesen und schreiben? 521
12.1.6 ... serialisierte Objekte in einer Datei abspeichern? 525
12.1.7 ... eine DataTable in einer Binärdatei speichern? 529
12.1.8 ... ein DataSet in einer XML-Datei speichern? 532
12.1.9 ... in XML-Dokumenten navigieren? 534
12.1.10 ... XML-Daten in eine TreeView einlösen? 538
12.2 Wie kann ich ... (ADO.NET) 541
12.2.1 ... den Verbindungsassistenten einsetzen? 541
12.2.2 ... ein Connection-Objekt programmieren? 544
12.2.3 ... wichtige ADO.NET-Objekte schnell kennen lernen? 546
12.2.4 ... mit DataReader und ListView arbeiten? 548
12.2.5 ... eine Aktionsabfrage ausführen? 551
12.2.6 ... Daten direkt zur Datenbank hinzufügen oder löschen? 554
12.2.7 ... Master-Detailbeziehungen im DataGrid anzeigen? 557
12.2.8 ... eine gespeicherte Prozedur aufrufen? 558
12.2.9 ... eine Access-Auswahlabfrage aufrufen? 561
12.2.10 ... parametrisierte Abfragen ausführen? 563
12.2.11 ... in einem DataView sortieren und filtern? 564
12.2.12 ... nach Datensätzen suchen? 566
12.2.13 ... Datensätze manuell aktualisieren? 569
12.2.14 ... Datensätze hinzufügen und löschen? 571
12.2.15 ... eine ListBox an eine DataView anbinden? 576
12.2.16 ... Steuerelemente an die Datenquelle binden? 577
12.2.17 ... ein zweites Formular an dieselbe Datenquelle binden? 582
12.2.18 ... mit der ComboBox zwei Tabellen verknüpfen? 587
12.2.19 ... die Spalten im DataGrid formatieren? 592
12.2.20 ... Schemainfos von der Datenbank abrufen? 594
12.2.21 ... mit Stapel-Abfragen arbeiten? 596
12.2.22 ... RowUpdating- und RowUpdated-Ereignis verstehen? 598
12.2.23 ... ein typisiertes DataSet erzeugen? 601
12.2.24 ... Bilder aus der Datenbank anzeigen? 605
12.2.25 ... Bilddateien in einer Datenbank verwalten? 608
12.2.26 ... BLOB-Daten anzeigen? 610
12.2.27 ... eine Chart-Komponente in .NET integrieren? 612
12.2.28 ... Daten als Diagramm darstellen? 613
12.2.29 ... mit dem DataForm-Assistenten arbeiten? 615
12.3 Wie kann ich ... (SQL/SQL Server) 623
12.3.1 ... die Beispieldatenbank auf dem SQL Server installieren? 623
12.3.2 ... ein SQL-Abfrageprogramm erstellen? 623
12.3.3 ... Aggregatfunktionen auswerten? 626
12.3.4 ... SQL-Injection verhindern? 627
12.4 Wie kann ich ... (Webanwendungen) 631
12.4.1 ... eine ASP.NET-Anwendung von CD installieren? 631
12.4.2 ... Daten zwischen WebForms austauschen? 633
12.4.3 ... Paging im DataGrid realisieren? 636
12.4.4 ... Daten im DataGrid zur Laufzeit sortieren? 638
12.4.5 ... Master-Detailbeziehungen mit dem DataGrid darstellen? 640
12.4.6 ... Daten im DataGrid editieren? 644
12.4.7 ... Einträge im DataGrid löschen? 648
12.4.8 ... die Ausführung von Webmethoden überwachen? 648
12.4.9 ... eine einfache Klasse programmieren und anwenden? 651
12.4.10 ... lokale Klassen in einem Webdienst nutzen? 654
12.4.11 ... komplexe Objekte mit Webdiensten übertragen? 657


Anhang 663
A: Northwind versus Nordwind 663
B: Glossar 667

Stichwortverzeichnis 671