Buchcover......Page 1 SQL Server 2008: Das Programmierhandbuch, 3. Auflage......Page 2 Impressum......Page 3 Liebe Leserin, lieber Leser......Page 4 Auf einen Blick......Page 5 Inhalt......Page 6 Vorwort......Page 24 1.1 Überblick über die verfügbaren SQL-Server-2008-Versionen......Page 26 1.2 Installationsvoraussetzungen......Page 27 1.3 Installation von SQL Server 2008......Page 28 1.4 Installation der SQL-Server-Beispieldatenbanken......Page 40 1.5.1 Der Upgrade Advisor......Page 46 1.5.2 Durchführung der Aktualisierung......Page 51 2.1 Server und Client......Page 58 2.2 Relationale Datenbanken......Page 59 2.2.1 Struktureller Aufbau von Tabellen......Page 62 2.2.2 Im Zusammenhang mit Tabellen gebräuchliche Fachbegriffe......Page 64 2.2.3 Schlüssel......Page 65 2.2.4 Beziehungsarten......Page 74 2.3 Datenbankmanagementsystem......Page 78 2.4 Integritätsarten......Page 81 3.1 Grundlagen des Datenbankentwurfs......Page 84 3.2 Normalisierungsregeln (Normalformen)......Page 85 3.2.1 Erste Normalform......Page 87 3.2.2 Zweite Normalform......Page 89 3.2.3 Dritte Normalform......Page 91 3.3 Normalisierung in der Praxis......Page 92 3.4 Denormalisierung......Page 96 3.5 Entity-Relationship-Diagramme......Page 97 4.1 Das SQL Server Management Studio......Page 100 4.1.1 Der Objekt-Explorer......Page 108 4.2.1 Der SQL-Abfrage-Editor......Page 119 4.2.2 Der Ergebnisbereich......Page 130 4.2.3 Der Abfrage-Designer......Page 133 4.3.1 Die SQL-Server-Onlinedokumentation......Page 136 4.3.2 Dynamische Hilfe......Page 138 4.3.3 SQL-Server-IntelliSense......Page 139 4.3.4 Der Vorlagen-Explorer......Page 141 4.3.5 Die Skript-Generierung......Page 145 4.3.6 Die Verwendung von Lesezeichen......Page 146 4.4 Überblick über die SQL-Server-Dienste......Page 149 4.5 Das Dienstprogramm sqlcmd......Page 150 5.1 Einführung in SQL......Page 154 5.2 SQL-Grundlagen......Page 155 5.2.2 Bezeichner......Page 156 5.2.3 Systemdatentypen......Page 157 5.2.4 Neue Datentypen in SQL Server 2008......Page 161 5.2.5 Informationen zu den Datentypen einer Tabelle......Page 162 5.2.6 Verwendung und Kennzeichnung von Zahlen, Zeichenketten und Datum-/Uhrzeitwerten......Page 163 5.3 Grundlegende Operatoren......Page 164 5.3.3 Vergleichsoperatoren......Page 165 5.3.4 Logische Operatoren......Page 166 5.4.1 USE......Page 168 5.4.2 SELECT...FROM......Page 169 5.4.3 Berechnete Spalten......Page 172 5.4.4 DISTINCT......Page 174 5.4.5 ORDER BY-Klausel......Page 175 5.4.6 WHERE-Klausel......Page 178 5.5.1 IS (NOT) NULL-Auswahloperator......Page 183 5.5.2 BETWEEN-Auswahloperator......Page 185 5.5.3 IN-Auswahloperator......Page 186 5.5.4 LIKE-Auswahloperator......Page 187 5.6 Aggregatfunktionen......Page 191 5.7 Unterabfragen......Page 194 5.8.1 Verknüpfung mehrerer Abfrageergebnisse durch UNION......Page 197 5.8.2 Beschränkung des Abfrageergebnisses mit TOP (n)......Page 199 5.8.3 GROUP BY-Klausel......Page 202 5.9 Ausgaben mit PRINT und SELECT......Page 206 6.1 Das Stapeltrennzeichen GO......Page 208 6.2.1 Variablendeklaration......Page 210 6.2.2 Wertezuweisung an eine Variable......Page 211 6.2.4 Inkrement und Dekrement......Page 212 6.2.5 Gültigkeitsbereich von Variablen......Page 213 6.2.7 Lokale und globale Variablen in SQL Server......Page 214 6.2.8 Wertezuweisung an Variablen durch Abfragen......Page 215 6.3.1 Blöcke......Page 218 6.3.2 IF...ELSE......Page 219 6.3.3 IF EXISTS......Page 222 6.3.4 WHILE-Schleife......Page 223 6.3.6 GOTO......Page 226 6.3.7 WAITFOR......Page 227 6.4 Fallunterscheidungen......Page 228 6.4.1 Die CASE-Funktion......Page 229 6.4.2 Die ISNULL-Funktion......Page 234 6.5.1 Konfigurationsfunktionen......Page 235 6.5.2 Datums-/Uhrzeitfunktionen......Page 236 6.5.3 Zeichenfolgenfunktionen......Page 239 6.5.5 Funktionen zur Statusabfrage......Page 243 6.5.6 Konvertierungsfunktionen......Page 244 6.6 Dynamische SQL-Anweisungen......Page 247 6.6.2 Ausführung dynamischer Anweisungen mit sp_executesql......Page 248 6.7.1 Struktur von Fehlermeldungen in SQL Server......Page 249 6.8.1 Fehlerbehandlung mit TRY und CATCH......Page 252 6.8.2 Funktionen zur Fehlerbehandlung......Page 256 6.8.3 Gegenüberstellung von TRY...CATCH und @@ERROR......Page 259 6.8.5 Erstellung benutzerdefinierter Fehlermeldungen......Page 261 6.8.6 Programmgesteuerte Fehlerauslösung......Page 263 6.8.7 Fehlerauslösung unter Verwendung von Parametern......Page 265 6.8.8 Löschen von benutzerdefinierten Fehlermeldungen......Page 268 7.1.1 Einbindung zweier Tabellen in die SELECT-Anweisung......Page 270 7.1.2 Innere Verknüpfung (INNER JOIN)......Page 272 7.1.3 Äußere Verknüpfung (OUTER JOIN)......Page 275 7.1.4 Mehrfache JOIN-Anweisungen......Page 276 7.1.5 Kreuzverknüpfung (CROSS JOIN)......Page 277 7.1.6 Umkehrung der Funktionsweise des INNER JOINs......Page 278 7.2.2 Einrichtung eines Verbindungsservers......Page 280 8.1 Erstellen einer einfachen Datenbank......Page 282 8.2 Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken......Page 290 8.4 Erstellen einer Datenbank mit mehreren Dateien......Page 291 8.5.1 Dateien hinzufügen......Page 294 8.5.2 Dateieigenschaften ändern......Page 296 8.6 Erstellen einer Datenbank mit mehreren Dateigruppen......Page 297 8.7 Datenbanken verkleinern......Page 300 8.8 Datenbankdateien verkleinern......Page 302 8.9 Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung......Page 303 8.10.1 Erstellen eines Datenbank-Snapshots......Page 304 8.10.2 Interne Verwaltung eines Snapshots......Page 306 8.10.3 Erstellen eines Snapshots für eine Datenbank mit mehreren Datendateien......Page 310 8.10.5 Datenbank-Snapshot löschen......Page 312 8.11.1 RAID 0......Page 313 8.11.2 RAID 1......Page 314 8.11.3 RAID 3......Page 315 8.11.4 RAID 5......Page 316 9.1 Die grundlegende Syntax zur Tabellenerstellung......Page 318 9.1.1 Definition einer Identitätsspalte......Page 320 9.1.2 Bestimmung des physischen Speicherorts......Page 321 9.2.1 Spalten hinzufügen (ADD)......Page 322 9.2.2 Spalten ändern (ALTER COLUMN)......Page 323 9.3 Löschen von Tabellen......Page 324 9.4.2 Definition von Einschränkungen......Page 325 9.4.3 Eigenschaften von Constraints......Page 327 9.4.4 Löschund Änderungsweitergabe......Page 331 9.5 Anwendungsbeispiel zu Einschränkungen......Page 332 9.6 Nachträgliche Definition von Einschränkungen......Page 334 9.7 Verwaltung von Einschränkungen......Page 335 9.7.2 Löschen einer Einschränkung......Page 336 9.8.1 Lokale temporäre Tabellen......Page 337 9.8.2 Globale temporäre Tabellen......Page 338 9.9 Partitionierung von Tabellen......Page 339 9.9.1 Erstellung einer Partitionsfunktion......Page 341 9.9.2 Erstellung eines Partitionsschemas......Page 342 9.9.3 Erstellung einer partitionierten Tabelle......Page 344 10.1 Räumliche Datentypen......Page 350 10.1.2 Der geography-Datentyp......Page 351 10.1.4 Das Klassenmodell räumlicher Datentypen......Page 352 10.1.5 Grundlegende Techniken zur Verwendung räumlicher Datentypen......Page 358 10.1.6 Allgemeine Verwendung räumlicher Datentypen......Page 361 10.1.7 Methoden zur Verarbeitung räumlicher Daten......Page 362 10.2 Der hierarchische Datentyp......Page 373 10.2.1 Die Methoden des hierarchischen Datentyps......Page 375 11.1.1 Einfügen von Datensätzen mit INSERT......Page 382 11.1.2 Daten aktualisieren mit UPDATE......Page 387 11.1.3 Löschen von Daten mit DELETE......Page 390 11.2 Verwendung des Zeilenkonstruktors......Page 391 11.3.1 INSERT...SELECT......Page 392 11.3.2 SELECT...INTO......Page 393 11.4.1 Grundlagen der MERGE-Anweisung......Page 394 11.4.2 Filterung von Datensätzen......Page 398 11.4.3 Die OUTPUT-Klausel......Page 399 11.5.1 BULK INSERT......Page 401 11.5.2 bcp......Page 402 12 Benutzerverwaltung und Schemas......Page 404 12.1 Authentifizierung am Server......Page 405 12.1.1 Einrichten eines Log-ins mit Windows-Authentifizierung......Page 406 12.1.2 Einrichten eines Log-ins mit SQL-Server-Authentifizierung......Page 407 12.2 Datenbankzugriff erteilen......Page 409 12.3 Zusammenfassung von Benutzern zu Rollen......Page 412 12.3.1 Serverrollen......Page 413 12.3.2 Feste Datenbankrollen......Page 414 12.3.3 Einen Benutzer zu einer Rolle hinzufügen......Page 415 12.4.2 Anweisungsberechtigungen......Page 416 12.4.3 SQL-Anweisungen zur Rechtevergabe......Page 418 12.5 Deaktivierung und Aktivierung von Log-ins und Datenbankbenutzern......Page 422 12.6.1 Das Log-in »system administrator« (»sa«)......Page 425 12.6.2 Der Datenbankbenutzer »guest«......Page 426 12.7 Schema......Page 427 12.7.1 Objektverwaltung bis SQL Server 2000......Page 428 12.7.3 Erstellen eines Schemas......Page 429 12.7.4 Namensauflösung bei fehlender Schema-Angabe......Page 431 13 Sichten......Page 434 13.1 Einsatz von Sichten......Page 435 13.2.1 Erstellen einer Sicht......Page 437 13.3 Datenmanipulationsanweisungen auf eine Sicht......Page 439 13.3.1 DML-Anweisungen auf eine Sicht ohne WHERE-Klausel......Page 440 13.3.2 DML-Anweisungen auf eine Sicht mit WHERE-Klausel......Page 441 13.4.1 Informationsschemasichten......Page 445 13.4.2 Systemsichten im Schema sys......Page 446 14.1 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server......Page 448 14.2.1 Grundlegende Syntax zu Erstellung einer gespeicherten Prozedur......Page 452 14.2.2 Verwendung von Eingabeparametern......Page 453 14.2.3 Die verschiedenen Arten der Parameterübergabe......Page 457 14.2.4 Verweisbezogene Übergabe......Page 459 14.2.5 Verwendung von Ausgabeparametern......Page 461 14.2.6 Verwendung eines Rückgabestatuscodes......Page 465 14.3 Tabellenübergabe an eine gespeicherte Prozedur......Page 469 14.4.1 ENCRYPTION......Page 472 14.4.2 RECOMPILE......Page 474 14.4.3 EXECUTE AS......Page 476 15.1 Überblick über benutzerdefinierte Funktionen......Page 478 15.2 Skalare Funktionen (Skalarwertfunktionen)......Page 479 15.3 Inlinefunktionen (Tabellenwertfunktionen)......Page 483 15.4 Tabellenwertfunktion mit mehreren Anweisungen......Page 486 15.6 Verwendung des Datentyps TABLE als lokale Variable......Page 489 15.6.1 Verwendung von Einschränkungen......Page 491 16.1 DML-Trigger......Page 494 16.1.1 Programmierung von DML-Triggern......Page 496 16.2.1 DDL-Trigger mit Serverbereich......Page 515 16.2.2 DDL-Trigger mit Datenbankbereich......Page 518 16.2.3 Informationen zur Auslösung von DDL-Triggern......Page 520 17 Ereignisbenachrichtigungen (Event Notifications)......Page 522 17.1 Aktivierung des Service Brokers......Page 523 17.2.2 Erstellung des Dienstes......Page 524 17.2.3 Einrichtung der Route......Page 525 17.3 Erstellen einer Ereignisbenachrichtigung......Page 526 17.4 Auslösen und Empfangen einer Ereignisbenachrichtigung......Page 527 17.5 Löschen der erstellten Objekte......Page 529 18.1 Funktionsweise eines Cursors......Page 530 18.2 Erstellung eines Cursors......Page 532 18.3 Öffnen eines Cursors......Page 534 18.4.1 Aufruf einer FETCH-Anweisung ohne Verwendung von Variablen......Page 535 18.4.3 Die Verwendung von Positionsangaben zum Abruf von Daten aus einem Cursor......Page 536 18.5 Schließen und Löschen eines Cursors......Page 544 18.6 Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors......Page 545 18.7.2 Löschen......Page 550 19 Indizes......Page 552 19.1 Der nicht gruppierte Index auf einem Heap......Page 553 19.1.1 Vorgehensweise beim Durchlaufen eines Index......Page 556 19.2 Der gruppierte Index......Page 557 19.3 Der nicht gruppierte Index auf einem gruppierten Index......Page 560 19.4.1 Manuelle Erstellung eines Index......Page 563 19.4.2 Automatische Erstellung von Indizes......Page 566 19.5.1 Fragmentierung......Page 567 19.5.3 Löschen eines Index......Page 570 19.6 Statistiken......Page 571 19.6.1 Löschen einer Statistik......Page 574 19.6.3 Informationen zu Statistiken abrufen......Page 575 19.7 Planung des Einsatzes von Indizes......Page 576 19.7.1 Verwenden des Datenbankmodul-Optimierungsratgebers......Page 578 19.8.1 Indizes mit eingeschlossenen Spalten......Page 585 19.8.2 Gefilterte Indizes......Page 589 19.8.3 Indizierte Sichten......Page 590 19.8.4 Partitionierte Indizes......Page 592 20.1 Einführung in Transaktionen......Page 594 20.2 ACID......Page 597 20.3 Interne Transaktionsverarbeitung......Page 599 20.4 Verhalten bei Systemfehlern......Page 601 20.5 Programmierung expliziter Transaktionen......Page 603 20.6 Implizite Transaktionen......Page 606 20.7 Wiederherstellung beim Systemstart (Recovery)......Page 608 20.8.1 Sperrebenen......Page 611 20.8.3 Exklusive Sperren (Exclusive Locks)......Page 612 20.9 Isolationsstufen auf Verbindungsebene......Page 613 20.9.1 READ UNCOMMITTED......Page 614 20.9.2 READ COMMITTED......Page 616 20.9.3 REPEATABLE READ......Page 618 20.9.4 SERIALIZABLE......Page 620 20.9.5 Zusammenfassung der Eigenschaften von Sperrstufen......Page 621 20.9.6 Setzen eines Timeout-Wertes......Page 622 20.10 Sperrhinweise auf Tabellenebene......Page 623 20.11 Informationen zu Sperren......Page 624 20.12 Deadlocks......Page 625 20.12.1 Vermeidung von Deadlocks......Page 626 20.12.2 Beispiel zur Erzeugung eines Deadlocks......Page 627 21.1.1 T-SQL......Page 630 21.1.2 Erweiterte gespeicherte Prozeduren......Page 631 21.1.4 Einsatz von Managed Code......Page 632 21.2 Die CLR-Integration im Detail......Page 634 21.2.1 CLR-Hosting......Page 635 21.2.3 I/O-Zugriffe......Page 636 21.2.5 Application Domain Management......Page 637 21.3 Der Hosting Layer......Page 638 21.4 Verwaltung von Assemblies......Page 641 21.5 Sicherheitsstufen......Page 642 22.1 CLR-Unterstützung aktivieren......Page 644 22.2.2 Prozeduren vs. Funktionen......Page 646 22.2.3 Veröffentlichung von Methoden......Page 647 22.2.4 Implementierungsregeln......Page 648 22.2.5 Parameter und Rückgabewerte......Page 649 22.2.6 Sicherheitsaspekte......Page 650 22.3.1 Eine gespeicherte Prozedur mit Visual Studio erstellen......Page 651 22.3.3 Parameter und Rückgabe......Page 655 22.3.5 Assembly bereitstellen......Page 656 22.3.6 Assembly ohne Visual Studio kompilieren......Page 657 22.3.8 Prozeduren mit Visual Studio debuggen......Page 658 22.4.1 Einschränkungen......Page 659 22.4.2 Das SqlFunction-Attribut......Page 660 22.4.3 Funktionen bereitstellen......Page 661 22.4.5 Eine Skalarfunktion erstellen......Page 662 22.4.7 Unterschiede zwischen T-SQLund CLR-Funktionen......Page 663 22.4.8 Eine tabellenwertige Funktion erstellen......Page 664 22.5 Serverseitiger Datenzugriff mit ADO.NET......Page 667 22.5.1 Der Kontext......Page 668 22.6 Pipes......Page 669 22.6.1 Die Send-Methode......Page 670 22.6.3 Ausgabestrom steuern......Page 673 22.7 Impersonalisierung......Page 677 22.8 Benutzerdefinierte Typen......Page 681 22.8.1 Das SqlUserDefinedType-Attribut......Page 682 22.8.2 Einen benutzerdefinierten Datentyp erstellen......Page 683 22.8.3 Das INullable-Interface......Page 684 22.8.6 Erstellung des CalendarWeek-Datentyps......Page 685 22.8.8 Den CalendarWeek-Typ testen......Page 688 22.8.9 Validierungen......Page 689 22.8.10 Methoden implementieren......Page 690 22.8.11 Serialisierung......Page 692 22.8.12 Typen als Klassen abbilden......Page 696 22.8.13 Zugriff vom Client......Page 697 22.9.1 Das SqlUserDefinedAggregate-Attribut......Page 698 22.9.2 Die Init-Methode......Page 699 22.9.6 Ein Beispielaggregat......Page 700 22.9.7 Das MaxRange-Aggregat implementieren......Page 702 22.9.9 Aggregate installieren......Page 705 22.10 Benutzerdefinierte Trigger......Page 706 22.10.2 Die TriggerContext-Klasse......Page 707 22.10.3 Trigger implementieren......Page 709 22.10.5 Trigger installieren......Page 712 22.11.1 Informationen über die installierten Assemblies ermitteln......Page 713 22.11.2 Laufzeitinformationen von CLR-Objekten ermitteln......Page 714 23 T-SQL: Neuerungen und Verbesserungen der Kompatibilität......Page 718 23.1 CROSS APPLY und OUTER APPLY......Page 720 23.2 Kreuztabellen mit PIVOT erstellen......Page 722 23.2.1 Entscheidungstabellen mit PIVOT erstellen......Page 727 23.2.2 Kreuztabellen in flache Listen transformieren......Page 728 23.3 Common Table Expressions......Page 730 23.3.1 Verarbeitung von hierarchischen Daten......Page 734 23.3.2 Maximale Rekursionsstufe einstellen......Page 737 23.4 Fehlerbehandlung......Page 738 23.4.1 Informationen über den Fehler ermitteln......Page 739 23.4.2 Eigene Fehler auslösen......Page 743 23.4.3 Verschachtelte Fehlerbehandlung......Page 744 23.5.1 Ergebnisse mit RANK() gewichten......Page 745 23.5.2 Ranking ohne Lücken mit DENSE_RANK()......Page 746 23.5.3 Gruppierte Ranglisten mit Windowing......Page 747 23.5.4 Zeilen mit ROW_NUMBER() nummerieren......Page 748 23.5.5 Paging mit ROW_NUMBER()......Page 749 23.5.6 Daten mit NTILE() partitionieren......Page 751 23.6 Die OUTPUT-Klausel......Page 752 23.7 Die TABLESAMPLE-Klausel......Page 754 23.8 EXCEPTund INTERSECT-Statement......Page 756 23.9 Tabellenwertparameter......Page 757 23.9.2 Tabellenwertparameter verwenden......Page 758 23.9.4 Aufruf vom Client mit ADO.NET......Page 759 23.9.5 Limitationen......Page 761 24 Einsatz von XML in der Datenbank......Page 762 24.2 HTML und XML......Page 763 24.2.1 Auszeichnungssprachen......Page 764 24.2.2 Auszeichnungen......Page 765 24.4 Der XML-Datentyp......Page 768 24.4.1 Vorund Nachteile der XML-Datenspeicherung......Page 769 24.4.2 XML-Felder anlegen......Page 771 24.4.3 XML-Felder mit einem Schema verknüpfen......Page 773 24.5.1 Eine kurze Einführung in XPath......Page 775 24.5.2 XQuery als Abfragesprache......Page 777 24.5.3 Die Methoden des XML-Datentyps......Page 778 24.5.4 Indizierung von XML-Feldern......Page 783 24.6 Darstellung von Abfrageergebnissen im XML-Format......Page 786 24.6.1 Der RAW-Modus......Page 788 24.6.2 Allgemeine Optionen der FOR XML-Klausel......Page 791 24.6.3 Der AUTO-Modus......Page 793 24.6.4 Der PATH-Modus......Page 795 24.6.5 Der EXPLICIT-Modus......Page 797 24.7 XML-Schema ermitteln......Page 803 24.8 XML-Daten in einem relationalen Modell speichern......Page 805 24.8.1 Ein XML-Dokument in eine Tabelle importieren......Page 806 25 Der Einsatz von Webservices in der Datenbank......Page 808 25.1 Warum Webservices?......Page 809 25.2 Den SQL Server als Webservice-Backend betreiben......Page 810 25.4 Einen Endpoint erstellen......Page 812 25.4.1 Die Status eines Endpoints......Page 813 25.4.3 Ports konfigurieren......Page 814 25.4.4 Methode definieren......Page 815 25.4.6 Authentifizierungstyp festlegen......Page 816 25.4.7 Authentifizierungsverfahren festlegen......Page 817 25.5 WSDL ermitteln......Page 820 25.5.2 WSDL vom Client abrufen......Page 821 25.6 Zugriff vom Client......Page 822 25.7 Sessionund State-Management......Page 825 25.7.2 Session-Steuerung durch den Client......Page 826 25.8 Batch-Abfragen......Page 828 25.9 Endpoints verwalten......Page 830 26.1 Einleitung......Page 832 26.1.1 Installation von Visual C# 2008 Express Edition......Page 834 26.1.2 Projekte anlegen und speichern......Page 835 26.2 Die Datenprovider......Page 836 26.3.1 Das Connection-Objekt......Page 838 26.3.2 Die Verbindungszeichenfolge......Page 839 26.3.3 Die Verbindung mit einer bestimmten SQL-Server-Instanz aufbauen......Page 840 26.3.4 Öffnen und Schließen einer Verbindung......Page 844 26.3.5 Das Verbindungspooling......Page 849 26.3.6 Die Ereignisse eines Connection-Objekts......Page 853 26.3.7 Verbindungszeichenfolgen aus einer Konfigurationsdatei abrufen......Page 855 26.3.8 Die Klasse SqlConnection im Überblick......Page 857 26.3.9 Verbindungen mit dem OleDb-Datenprovider......Page 859 26.4.1 Das SqlCommand-Objekt......Page 862 26.4.2 Abfragen, die genau ein Ergebnis liefern......Page 867 26.5 Das SqlDataReader-Objekt......Page 868 26.5.1 Datensätze einlesen......Page 869 26.5.3 MARS (Multiple Active Resultsets)......Page 872 26.5.4 Batch-Abfragen mit NextResult durchlaufen......Page 874 26.5.5 Das Schema eines SqlDataReader-Objekts untersuchen......Page 875 26.6.1 Parametrisierte Abfragen mit dem SqlClient-Datenprovider......Page 878 26.6.3 Asynchrone Abfragen......Page 881 26.6.4 Gespeicherte Prozeduren (Stored Procedures)......Page 885 26.7.1 Was ist ein DataAdapter?......Page 893 26.7.2 Die Konstruktoren der Klasse DataAdapter......Page 895 26.7.4 Den lokalen Datenspeicher mit Fill füllen......Page 896 26.7.5 Tabellenzuordnung mit TableMappings......Page 900 26.7.6 Das Ereignis FillError des SqlDataAdapters......Page 905 26.8 Daten im lokalen Speicher – das DataSet......Page 906 26.8.1 Verwenden des DataSet-Objekts......Page 907 26.8.2 Dateninformationen in eine XML-Datei schreiben......Page 911 26.8.3 Dem DataSet Schemainformationen übergeben......Page 912 26.8.4 Schemainformationen bereitstellen......Page 914 26.8.6 Die Constraints-Klassen einer DataTable......Page 915 26.8.7 Das Schema mit Programmcode erzeugen......Page 916 26.8.8 Schemainformationen mit SqlDataAdapter abrufen......Page 918 26.8.9 Änderungen in einer DataTable vornehmen......Page 922 26.8.10 Was bei einer Änderung einer Datenzeile passiert......Page 927 26.8.11 Manuelles Steuern der Eigenschaft DataRowState......Page 931 26.9.1 Der Weg über JOIN-Abfragen......Page 932 26.9.2 Mehrere Tabellen in einem DataSet......Page 934 26.9.3 Eine DataRelation erzeugen......Page 935 26.9.4 DataRelations und Einschränkungen......Page 936 26.9.5 In Beziehung stehende Daten suchen......Page 938 26.10.1 Aktualisieren mit dem CommandBuilder-Objekt......Page 941 26.10.2 Manuell gesteuerte Aktualisierungen......Page 944 26.10.3 Aktualisieren mit ExecuteNonQuery......Page 946 26.10.4 Manuelles Aktualisieren mit dem DataAdapter......Page 954 26.10.5 Den zu aktualisierenden Datensatz in der Datenbank suchen......Page 957 26.10.6 Den Benutzer über fehlgeschlagene Aktualisierungen informieren......Page 962 26.10.7 Konfliktverursachende Datenzeilen bei der Datenbank abfragen......Page 965 26.11 Objekte vom Typ DataView......Page 971 26.11.1 Eine DataView erzeugen......Page 972 26.11.4 Die Methode FindRows......Page 973 26.11.6 Die Eigenschaft RowStateFilter......Page 974 26.11.7 Änderungen an einem DataView-Objekt......Page 975 26.11.8 Aus einer DataView eine DataTable erzeugen......Page 976 26.12 Stark typisierte DataSets......Page 977 26.12.1 Ein stark typisiertes DataSet erzeugen......Page 978 26.12.2 Die Anatomie eines typisierten DataSets......Page 982 26.12.3 Typisierte DataSets manuell im Designer erzeugen......Page 989 26.12.5 Der TableAdapter......Page 991 26.12.6 Einen TableAdapter mit Visual Studio erzeugen......Page 992 26.12.8 TableAdapter im Code verwenden......Page 997 26.13 Fazit: Typisierte oder nicht typisierte DataSets?......Page 1004 26.14.1 Eine Verbindung mit einem Steuerelement herstellen......Page 1005 26.14.2 SqlCommand-Objekte mit dem Designer erzeugen......Page 1006 26.14.3 SqlDataAdapter mit dem Designer erzeugen......Page 1008 26.14.4 Datenausgabe in WinForms mit Visual Studio 2008......Page 1011 26.15 Datenbindung......Page 1014 26.15.1 Binden an Datenquellen (Simple Binding)......Page 1015 26.15.2 Komplexe Datenbindung (Complex Binding)......Page 1025 27.1 Was ist LINQ?......Page 1030 27.2.1 Implizit typisierte Variablen (Typinferenz)......Page 1032 27.2.2 Lambda-Ausdrücke......Page 1033 27.2.3 Erweiterungsmethoden......Page 1040 27.2.5 Anonyme Typen......Page 1043 27.2.6 C# 3.0 und LINQ-Abfragen......Page 1044 27.3.1 Musterdaten......Page 1047 27.3.2 Die Abfrage-Syntax......Page 1050 27.3.3 Übersicht über die Abfrageoperatoren......Page 1051 27.3.4 Die from-Klausel......Page 1052 27.3.5 Der Restriktionsoperator where......Page 1053 27.3.6 Die Projektionsoperatoren......Page 1056 27.3.7 Sortieroperatoren......Page 1057 27.3.8 Gruppieren mit GroupBy......Page 1059 27.3.9 Verknüpfungen mit Join......Page 1060 27.3.10 Die Set-Operatoren-Familie......Page 1063 27.3.11 Die Familie der Aggregatoperatoren......Page 1065 27.3.12 Generierungsoperatoren......Page 1068 27.3.14 Aufteilungsoperatoren......Page 1070 27.3.15 Die Elementoperatoren......Page 1073 27.4.1 Allgemeine Grundlagen......Page 1076 27.4.2 Objektzuordnung mit Entitätsklassen......Page 1077 27.4.3 Das Mapping von Objekten......Page 1079 27.4.4 Verknüpfungen zwischen Entitäten......Page 1080 27.4.5 Tools zur Erzeugung von Entitätsklassen......Page 1087 27.4.6 Die Klasse DataContext......Page 1088 27.4.7 Konflikte behandeln......Page 1094 27.5.1 Handhabung des O/R-Designers......Page 1101 27.5.2 Die abgeleitete DataContext-Klasse......Page 1104 27.5.3 Die Entitätsklassen......Page 1107 27.5.4 WinForm-Beispielprogramm mit einer Tabelle......Page 1109 27.5.5 WinForm-Beispiel mit mehreren Tabellen......Page 1116 A......Page 1120 B......Page 1122 C......Page 1124 D......Page 1126 E......Page 1128 F......Page 1130 H......Page 1131 I......Page 1132 J......Page 1133 L......Page 1134 M......Page 1135 O......Page 1136 P......Page 1137 R......Page 1138 S......Page 1140 T......Page 1144 V......Page 1146 W......Page 1147 X......Page 1148 Z......Page 1149