Upload
buihuong
View
215
Download
0
Embed Size (px)
Citation preview
Kurzübersicht
Vorwort •. 31
1 Erste Schritte 35
2 Einführung in LINQ 83
3 SQL in Theorie und Praxis 121
4 Einführung ADO.NET 213
5 Das DataSet-Objekt im Detail 305
6 Windows Forms-Datenbindung 389
7 Datenbindung - WPF 471
8 Datenbindung in ASP.NET-Anwendungen 513
9 Die Microsoft Chart-Controls 639
10 Reporting Services 671
11 Crystal Reports -....'. 747
12 Access-Datenbanken 813
13 Microsoft SQL Server-Einstieg 891
14 Microsoft SQL Server-Programmierung 949
15 SQL Server Compact 1049
16 SQLite-Ein Mini ganz groß 1085
17 LINQ to SQL 1109
18 Arbeiten mit dem Entity Framework 1159
19 WCF - eine Einführung 1247
20 Einführung WCF Data Services 1293
21 Komplexbeispiel Webshop 1327
Stichwortverzeichnis 1399
Inhaltsverzeichnis
Die Bonuskapitel 3,11 und 21 finden Sie als PDF-Datei auf der beiliegenden CD. Im Inhaltsverzeichnis sind sie
durch ein CD-Symbol gekennzeichnet.
Vorwort 31
Erste Schritte 35Unsere Werkstatt 36
Betriebssystem 36Internet Information Server 36Visual Studio 2010 39SQL Server 2008 oder SQL Server Express 39Microsoft Access 40
Visual Basic und die Datenbankprogrammierung 40Zur Geschichte des universellen Datenzugriffs 41Merkmale webbasierter Anwendungen 42Ein Wort zum .NET-Sicherheitskonzept 45
Was ist neu in .NET 4.0/Visual Studio 2010? 46Die verschiedenen Pakete 46Die Visual Basic-Entwicklungsumgebung 46Neuheiten im Framework 4.0 47VB 2010: Sprache und Compiler 48
Ein wenig Datenbanktheorie 49Normalisieren von Tabellen 50Verknüpfen von Tabellen 54Weitere wichtige Begriffe 58
Einführungsbeispiele ~ 601.1 ... auf eine lokale Access-Datenbank zugreifen? 601.2 ... mit dem Microsoft SQL Server arbeiten? 641.3 ... eine einfache LINQ to SQL-Anwendung schreiben? 661.4 ... eine einfache ASP.NET-Webanwendung erstellen? 691.5 ... meine erste WPF-Anwendung entwickeln? 751.6 ... einen einfachen WCF-Dienst entwickeln? 78
Einführung in LINQ 83Die LINQ-Philosophie 84
OOP-Modell versus relationales Modell 84Besonderheiten beim ORM , 85Ein erstes LINQ-Beispiel 86Der Weg zu LINQ 88
Die neuen Sprachfeatures 91Typinferenz 91Nullable-Typen 93Objekt-Initialisierer 94
Inhaltsverzeichnis
Anonyme Typen 95Erweiterungsmethoden 96Lambda-Ausdrücke 97
Abfragen mit LINQ to Objects 100Grundlegende Syntax 100Übersicht der wichtigsten Abfrageoperatoren 102Die Projektionsoperatoren Select und SelectMany 104Der Restriktionsoperator Where 106Die Sortierungsoperatoren OrderBy und ThenBy 106Der Gruppierungsoperator GroupBy 108Verknüpfen mit Join 109Aggregatoperatoren 110Verzögertes Ausführen von LINQ-Abfragen 112Konvertierungsmethoden 112Abfragen mit PLINQ 113
How-to-Beispiele 1162.1 ... LINQ-Abfragen verstehen? 1162.2 ... nichtgenerische Collections abfragen? 118
in Theorie und Praxis 121Einführung 122
SQL-Dialekte 122Kategorien von SQL-Anweisungen 123
Testprogramm und Beispieldatenbank 124Hinweise zur Bedienung 125Unsere Beispieldatenbank im Überblick 125Alternative Varianten für die SQL-Abfrage 126Bemerkungen 129
Daten abfragen 129Abfragen mit SELECT 129Alle Spalten auswählen 130Auswahl der Spalten -. ^ 131Filtern 132Beschränken der Ergebnismenge 138Eindeutige Records/doppelte Datensätze 140Tabellen verknüpfen 141Tabellen vereinigen 144Datensätze sortieren 145Datensätze gruppieren 146Unterabfragen 147
Daten manipulieren 152Einfügen einzelner Datensätze 152Einfügen von Abfragedaten 153Exportieren/Importieren von Abfragedaten 155Aktualisieren/Ändern 158Löschen 158
Erweiterte SQL-Funktionen 159Berechnete/Formatierte Spalten 160Berechnungsfunktionen 167
Inhaltsverzeichnis, _
NULL-Werte 169Datum und Zeit in SQL-Abfragen 170Datentypumwandlungen 176Kreuztabellenabfragen 177
Datenbankverwaltung mit SQL (DDL) 179Datenbanken 179Tabellen 180Indizes 181Tabellen/Indizes löschen oder verändern 183Sichten (Views) 184Nutzer- und Rechteverwaltung 186
Datenbankentwurf optimieren 189Indizes 189Abfrageoptimierung 190Weitere Möglichkeiten 191
SQL in der Visual Basic-Praxis 191Ausführen oder abfragen? 191Einfügen von Strings zur Laufzeit 193Datumseingabe 193Parameterübergabe 194
How-to-Beispiele 1973.1 ... nach einem INSERT das Zählerfeld abfragen? 1973.2 ... die Anzahl der Datensätze ermitteln? 1983.3 ... Datumsteile in SQL zur Suche nutzen? 1983.4 ... die Groß-/Kleinschreibung berücksichtigen? 199
- 3.5 ... WITH OWNERACCESS OPTION verwenden? 1993.6 ... Datensätze richtig verknüpfen? 2003.7 ... doppelte Datensätze aus einer Tabelle löschen? 2013.8 ... die IFF-Funktion ersetzen? 2023.9 ... ein einfaches SQL-Abfrageprogramm erstellen? 2033.10 ... Aggregatfunktionen auswerten? 2053.11 ... SQL-Injection verhindern? -: 2063.12 ... die Access 2007-Datenbankfeatures unterstützen? 210
Übersichten 211Die wichtigsten SQL-Befehle 211Unterschiede ANSI-SQL und Access-SQL 212
Einführung ADO.NET 213Die wichtigsten Klassen in ADO.NET 214
Klassenhierarchie 214Die Klassen der Datenprovider 215Klassen im DataSet 218Das Zusammenspiel der ADO.NET-Klassen 218
Das Connection-Objekt 219Allgemeiner Aufbau 219OleDbConnection 220SqlConnection 222Fehlerbehandlung beim Öffnen einer Verbindung 225Schließen einer Verbindung 226
1 0
Verbindungspooling , 227Transaktionen : 227Eigenschaften des Connection-Objekts 228Methoden des Connection-Objekts 230Ereignisse des Connection-Objekts 231Der ConnectionStringBuilder 232ConnectionString in den Anwendungseinstellungen speichern 233
Das Command-Objekt 234Erzeugen und Anwenden eines Command-Objekts 234Erzeugen mittels CreateCommand-Methode 235Eigenschaften des Command-Objekts 235Methoden des Command-Objekts 238Freigabe von Connection- und Command-Objekten 239
Parameter-Objekte 240Erzeugen und Anwenden eines Parameter-Objekts 240Eigenschaften des Parameter-Objekts 241
Das CommandBuilder-Objekt 243Erzeugen 243Anwenden 243Einsatzbeschränkungen 244Einige Regeln 244
' Optimistisches Konkurrenzmodell 245Das DataReader-Objekt 245
DataReader erzeugen 245Daten lesen 246Eigenschaften des DataReaders 247Methoden des DataReaders 247
Das DataAdapter-Objekt 247DataAdapter erzeugen 248Command-Eigenschaften 249Fill-Methode 249Update-Methode 250UpdateCommand und Parameter-Objekte 251InsertCommand und DeleteCommand 253MissingSchemaAction-Eigenschaft 256RowUpdating- und RowUpdated-Ereignis 256
Arbeiten mit Excel-Arbeitsmappen 258Zugriffsmöglichkeiten 258OLE DB-Connectionstring 259Zugriff auf Excel 2007/2010-Arbeitsmappen 260Neue Mappen erstellen 261Daten in ein Tabellenblatt eintragen 262Daten aktualisieren 263Daten auslesen 263Zugriff auf Tabellenbereiche 265OLE-Automation 266
Weitere Features des Datenzugriffs 268Auslesen von Datenbankschemas 269Providerfabriken 269
' Inhaltsverzeichnis
How-to-Beispiele 2704.1 ... wichtige ADO.NET-Objekte schnell kennen lernen? 2704.2 ... eine Aktionsabfrage ausführen? 2724.3 ... Daten direkt zur Datenbank hinzufügen oder löschen? 2744.4 ... eine Access-Auswahlabfrage ausführen? 2774.5 ... parametrierte Abfragen ausführen? ; 2804.6 ... die Datenbank aktualisieren? 2834.7 ... RowUpdating-/RowUpdated-Ereignisse verstehen? 2874.8 ... Schemainformationen von der Datenbank abrufen? 2904.9 ... einen Connectionstring verschlüsseln? 2934.10 ... eine klassische Datenzugriffsschicht entwickeln? 295
Übersichten 300Datentypen 300Connection-Objekt 300Command-Objekt 301Parameter-Objekt 302DataReader-Objekt 302DataAdapter 303CommandBuilder 304
5 Das DataSet-Objekt im Detail 305Einführung 306
Das Objektmodell 306Methoden zum Erzeugen eines DataSets 308Weitere wichtige Methoden des DataSets 310Die XML-Fähigkeiten des DataSets 311
Das DataTable-Objekt 313DataTable erzeugen 313Spalten hinzufügen 314Berechnete Spalten 315Primärschlüssel ergänzen 316Einbinden von Constraints 317Hinzufügen von Relationen 319Zeilen zur DataTable hinzufügen 322Auf den Inhalt einer DataTable zugreifen 323Weitere Hinweise zum Bearbeiten von Zeilen 326Zeilen löschen 327Zeilenstatus und Zeilenversion , 328Ereignisse des DataTable-Objekts 331
Datenansichten mit Data View 332Erzeugen eines Data View 333Sortieren und Filtern von Datensätzen 333Suchen von Datensätzen 334Zeilenansicht mit DataRowView 335
Weitere DataSet-Features 336Umwandlungen zwischen DataSet und DataReader 336Binäre Serialisierung für DataSet/DataTable 338Die DataTable kann mehr XML 338Schnelles Laden von DataSets 338
Inhaltsverzeichnis
Typisierte DataSets 339Was ist ein typisiertes DataSet? 339Das Datenquellen-Konzept 341"Typisierte DataSets und TableAdapter 342
LINQ to DataSet 344Untypisierte DataSets abfragen 345Typisierte DataSets abfragen 346Abhängigkeiten zwischen den Tabellen auflösen 347
Die Qual der Wahl 349DataReader - der schnelle Lesezugriff 349DataSet - die Datenbank im Hauptspeicher 349Objektrelationales Mapping - die Zukunft? 350
How-to-Beispiele 3515.1 ... eine DataTable erzeugen und in einer Binärdatei speichern? 3515.2 ... eine DataTable in einer XML-Datei abspeichern? 3555.3 ... Master-Detailbeziehungen im DataGrid anzeigen? 3565.4 ... in einem Data View sortieren und filtern? 3585.5 ... nach Datensätzen suchen? 3595.6 ... vereinfacht nach Datensätzen suchen? 3625.7 ... zwischen DataTable und DataReader umwandeln? 364
-5.8 ... große Datenmengen in ein DataSet laden? 3665.9 ... ein DataSet binär serialisieren? 3685.10 ... ein DataSet in einen XML-String konvertieren? 3705.11 ... ein untypisiertes in ein typisiertes DataSet laden? 3755.12 ... ein typisiertes DataSet mit LINQ abfragen? 3795.13 ... mit LINQ to DataSet die Datenbank aktualisieren? 381
Übersichten 384DataSet 384DataTable 385DataColumn 386DataRow 387DataView 388
Windows Forms-Datenbindung 389Einführung 390
Manuelle Datenbindung an einfache Datenfelder 391Manuelle Datenbindung an Listen und Tabelleninhalte 394Entwurfszeit-Datenbindung an ein typisiertes DataSet 395
Drag & Drop-Datenbindung 396Navigieren im DataSet 397
Vor- und Rückwärtsblättern 397Hinzufügen und Löschen 397Aktualisieren und Abbrechen 397BindingNavigator 398
Die Anzeige formatieren 398Das DataGridView 399
Vom DataGrid zum DataGridView 399Grundlegende Datenbindung 400Standardmäßige Anzeige und Bedienung 401
Inhaltsverzeichnis
Wichtige Spalteneinstellungen 402Automatische Größenanpassungen .' 403Selektieren von Zellen 405Columns- und Rows-Auflistungen 406DataGridViewCellStyle-Objekte 407Spaltentypen 410Editieren im DataGridView 413Fehlerbehandlung 413Eingabeprüfung 414
How-to-Beispiele 4156.1 ... eine Objekt-Datenquelle verwenden? 4156.2 ... Steuerelemente an einen Objektbaum binden? 4186.3 ... Detailinformationen mit ListBox/ComboBox anzeigen? 4246.4 ... Steuerelemente manuell an ein DataSet binden? 4266.5 ... zwei Formulare an eine Datenquelle binden? 4326.6 ... mittels ComboBox zwei Tabellen verknüpfen? 4366.7 ... ein typisiertes DataSet manuell binden? 4406.8 ... l:n-Beziehungen per Drag & Drop-Datenbindung anzeigen? 4456.9 ... die Spalten im DataGridView formatieren? 447
, 6.10 ... mit DataReader und ListView arbeiten? 4506.11 ... Bilder aus der Datenbank anzeigen? 4536.12 ... BLOB-Daten verwalten? 4556.13 ... BLOB-Daten anzeigen? 4576.14 ... das DataGridView als Datenbank-Frontend verwenden? 4586.15 ... Datenbindung mit LINQ to SQL kennen lernen? 4646.16 ... den DataRepeater für die Anzeige verwenden? 468
Datenbindung-WPF 471Grundprinzip 472
Bindungsarten 473Wann wird eigentlich die Quelle aktualisiert? 474Bindung zur Laufzeit realisieren -..„ 475
Binden an Objekte 476Objekte im Code instanziieren 477Verwenden der Instanz im VB-Quellcode 478Anforderungen an die Quell-Klasse 479Instanziieren von Objekten per VB-Code 480
Binden von Collections 481Anforderung an die CoUection 481Einfache Anzeige 482Navigation zwischen den Objekten 483Einfache Anzeige in einer ListBox 484DataTemplates zur Anzeigeformatierung 485Mehr zu List- und ComboBox 486Verwendung der ListView 488
Ein Blick hinter die Kulissen 490Navigieren in den Daten 491Sortieren 492Filtern 492
1 4
Drag & Drop-Datenbindung 493Vorgehensweise 493Weitere Möglichkeiten 496
Formatieren von Werten 497IValueConverter 497BindingBase.StringFormat-Eigenschaft 499
Das DataGrid als Universalwerkzeug 500Grundlagen der Anzeige 500Vom Betrachten zum Editieren 504
How-to-Beispiele 5057.1 ... Datenbindung unter LINQ to SQL realisieren? 5057.2 ... Drag & Drop-Bindung für Master/Detail-Beziehungen umsetzen? 509
Datenbindung in ASP.NET-Anwendungen 513Übersicht Datenbindung unter ASP.NET 514
, Grundkonzept 515DataSource-Steuerelemente 515
SqlDataSource im Detail 516Datenauswahl mit Parametern 518Parameter für INSERT, UPDATE und DELETE 519FilterExpression 521Caching 522Weitere Methoden 522Ereignisse 523
Zugriff auf Geschäftsobjekte mit der ObjectDataSource 524Verbindung zwischen Objekt und DataSource 524Ein Beispiel sorgt für Klarheit 525Geschäftsobjekte in einer Session verwalten 529
Typisierte DataSets und ObjectDataSource 531Verwendung von TableAdaptern in ASP.NET-Seiten 531Datenauswahl und Anzeige mit TableAdaptern 532Datenmanipulation mit TableAdaptern 536ObjectDataSource und typisierte DataSets 538
LinqDataSource 542Bindung von einfachen LINQ-Coüections 543Binden eines LINQ to SQL-DataContext 545Berechnete Spalten/Detaildaten 546Eigene LINQ-Ausdrücke zur Laufzeit übergeben 548Filtern mit der LinqDataSource 548
EntityDataSource 550Entity Data Model erstellen 550EntityDataSource anbinden 553Datenmenge filtern 556
QueryExtender 556Grundlagen 557Suchen 558Sortieren 560
Weitere Datenquellen 561Spezialfall AccessDataSource 561
Inhaltsverzeichnis
Verwalten strukturierter Daten mit der XmlDataSource 561Das GridView-Steuerelement im Detail 562
Auswahlfunktion (Zeilenauswahl) 563Auswahl mit mehrspaltigem Index realisieren 564Hyperlink-Spalte für Detailansicht nutzen 564Spalten erzeugen/konfigurieren 565Template-Spalten verwenden 566Paging im GridView realisieren 570Editieren und Löschen im GridView 571Einfügen von Datensätzen 571Keine Daten, was tun? 572
Weitere Steuerelemente für die Datenbindung 572DetailsView 572Form View 575DataList 578Repeater 580ListView 582Label/TextBox 586CheckBoxList, BulletList, RadioButtonList, DropDownList, ListBox 587Hierarchische Datenanzeige mittels TreeView-Control 589Chart-Steuerelement 592
Eingabeprüfung mit den Validator-Steuerelementen 594Übersicht 594Wo findet die Fehlerprüfung statt? 594Verwendung 595RequiredFieldValidator 596CompareValidator 596RangeValidator 598RegularExpressionValidator 599CustomValidator 600ValidationSummary 602Weitere Möglichkeiten der Validation-Steuerelemente -. 603
Reports in ASP.NET-Anwendungen verwenden 603Der Microsoft ReportViewer 603Direkter Excel-/PDF-Export 605Parameterübergabe an lokale Reports 607
Weitere Themen 608Dynamic Data 608ASP.NET MVC 615AJAX 619
How-to-Beispiele 6228.1 ... die Zellen im GridView formatieren? 6228.2 ... ein GridView mit Scrollbar realisieren? 6248.3 ... ein GridView mit Mouseover-Effekt realisieren? 6248.4 ... GridView-Daten im Excel-Format exportieren? 6268.5 ... Detaildaten in einem Popup-Fenster anzeigen? 6298.6 ... eine Zeilensumme im GridView berechnen? 6328.7 ... reagieren, wenn keine Daten vorhanden sind? 6328.8 ... im GridView eine Spaltensummen berechnen? 633
Inhaltsverzeichnis
8.9 ... korrekte Währungswerte im GridView anzeigen? 6348.10 ... Eingabewerte im GridView validieren? 6358.11 ... einen E-Mail-Versand inASP.NET realisieren? 636
9 Die Microsoft Chart-Controls 639Allgemeine Chart-Features 640
Serien/Reihen und Datenpunkte direkt erzeugen 640Den Diagrammtyp ändern 6413D-Darstellung 644Farben für Serien und Datenpunkte 644Leere Datenpunkte 645Diagramm drucken 646Diagramm exportieren/abspeichern 646
Einführung in die Chart-Datenbindung 647Manuelle Datenbindung mittels Points.AddXY-Methode 647Übersicht über die speziellen Datenbindungsmethoden 649Unterstützte Datenquellen 650
Spezielle Chart-Datenbindungsmethoden 650Die DataBindTable Methode 650DataBind-Methode/DataSource-Eigenschaft 653Die DataBindCrossTable-Methode 654Die Points.DataBind-Methode 656Die Points.DataBind(X)Y-Methoden 657
How-to-Beispiele 6609.1 ... das Chart-Control zur Laufzeit mit Daten füllen? 6609.2 ... das Chart mit einer LINQ to SQL-Abfrage verbinden? 6629.3 ... mit ASP.NET ein Diagramm anzeigen? 664
10 Reporting Services 671Übersicht 672
Report Designer 672Report Viewer - 672
Einführungsbeispiele 673Der erste Bericht - so einfach geht das! 673Ein zweiter Bericht - weg mit dem Assistenten! 678
Unsere Werkzeuge zum Berichtsentwurf 683Oberfläche des Report-Designers 683Toolbox 683Bericht-Menü 685Berichtsdaten-Fenster 686Programmieren im Ausdrucks-Editor 688
Sortieren, Gruppieren und Filtern von Datensätzen 691Allgemeines 691Sortieren 693Gruppieren 693Filtern 695
Kreuztabellenberichte 696Einfache Matrix 696Zeilen- und Spaltensummen anzeigen 697
Inhaltsverzeichnis
Zusätzliche berechnete Spalten einfügen 698Matrix mit zwei Zeilengruppen 698Bilder anzeigen 699Ein Bild in den Bericht einbetten 700Bilder aus einer Datenbank 701Externe Bilder 701Hintergrundbilder 701
Diagramme darstellen 701Diagrammtypen 701Säulendiagramm 702Weitere Gruppen hinzufügen 704Weitere Diagramme 706
Parameter anwenden 707Parameterdefinition 707Einbau von Parametern in den Berichtsentwurf 708Parameterwerte an Bericht übergeben 709
Berichtsvariablen 710Master-Detail-Reports 711
Subreports 711Eingebettete Datenregionen 711
Noch mehr Reporting 712Hyperlink realisieren 712Verwenden von ReportViewer-Ereignissen 713
Hinzufügen von benutzerdefiniertem Code 715Variante 1: Eingebetteter Visual Basic Code 715Variante 2: Benutzerdefinierte Assembly 716
Ergänzungen zum ReportViewer 718Local Mode versus Server Mode 718RDL- versus RDLC-Format 718Übersicht Datenbindung 719
How-to-Beispiele 72110.1 ... einen Bericht mit dem Berichtsassistenten erstellen? 72110.2 ... einen Unterbericht verwenden? 72510.3 ... eine Rechnung anzeigen? 73110.4 ... das Drillthrough-Event behandeln? 73610.5 ... auf eine benutzerdefinierte Assembly zugreifen? 73910.6 ... das Messgerät zur Anzeige nutzen? 744
£rystal Reports 747bersicht 748
Installieren 748Ein Einsteigerbeispiel 749Der Report-Designer 755Der Reportaufbau 756Die Druckvorschau-Komponente 757
Wichtige Funktionen im Überblick 758Formelfelder 758Parameterfelder 759Gruppennamenfelder 760
18
Spezialfelder 760SQL-Ausdrucksfelder 761Laufende Summe-Felder 761Unterberichte 762Diagramme und Bilder 763Weitere Komponenten 763Das Ereignis-Modell 764
Reports entwerfen 765Verbindung zur Datenbank herstellen 765Sortieren und Gruppieren 768Verwenden von Parameterfeldern 772Berechnungen im Report 775Gestalten mit bedingter Formatierung 779Kreuztabellenberichte 781Unterberichte 784
Programmieren der Druckvorschau 787Der CrystalReportViewer im Überblick 787Wichtige Eigenschaften, Methoden und Ereignisse 787
Direkte Ausgabe auf dem Drucker 789Die Lizenz zum Drucken 789Druckerauswahl und Konfiguration 790Drucken mit Druckerdialog 791
Exportieren von Reports 792Bestimmen des Exportformats 792Export als Datei 793Export als E-Mail 794
Praxisbeispiel - Rechnung mit Crystal Report drucken 795Datenbasis anpassen 795Report erzeugen 797Festlegen der Datenquelle 797Berechnungen im Report durchführen 797Auswahl der gewünschten Datensätze ." 798Reportdesign 798Druckvorschaufenster entwerfen 800Zuweisen der Daten und Übergabe der Parameter 801Die fertige Rechnung 802
How-to-Beispiele 80311.1 ... ein Deckblatt erzeugen? 80311.2 ... Seitenzahlen, Druckdatum etc. einblenden? 80311.3 ... Spaltensatz oder Etiketten realisieren? 80311.4 ... die Seitenränder festlegen? 80411.5 ... mehrspaltige Reports erstellen? 80511.6 ... einen Seitenumbruch erzwingen? 80511.7 ... die Position und Größe der Druckvorschau vorgeben? 80611.8 ... Reports in die Applikation einbetten? 80611.9 ... Querdruck auswählen? 80611.10 ... RTF-/HTML-Text ausgeben? 80711.11 ... den Report zur Laufzeit auswählen? 80711.12 ... Summen, Anzahlen, Mittelwerte etc. berechnen? 808
11.13 ... farbliche und optische Formatierungen realisieren? 80811.14 ... den Datenbankpfad zur Laufzeit anpassen? 80911.15 ... die Login-Informationen zur Laufzeit ändern? 81011.16 ... Crystal Report unter LINQ to SQL nutzen? " 810
12 Access-Datenbanken 813Ein erster Blick auf Microsoft Access-Datenbanken 814
Warum Access? 814Access-Datentypen 815Beschränkungen 816
Zugriff aus Visual Basic 816Warum nicht nur ADO.NET? 817Die ADOX-Library , 817Die JRO-Library 818ADO MD 818Einbinden von ADOX und JRO in VB 820Parameter für ADO.NET-Connectionstrings ; 821Access-Datenbankpasswort 821Access-Datenbanksicherheit (Benutzer-/Gruppenebene) 822Datenbankzugriff auf schreibgeschützte Medien (CD, DVD) 823
Datenbanken erstellen 823Die Create-Methode 824Weitere Parameter 824Jet-spezifische Optionen 824
Tabellen/Indizes erstellen/verwalten 826Tabellendefinition 826Indexdefinition 831Erstellen von Prozeduren und Sichten 833Tabellen verknüpfen (Relationen) 834
Zugriffsschutz in Access-Datenbanken 836Grundlagen 836Sichern auf Datenbankebene 837Erstellen neuer Benutzer und Gruppen 838Vergabe von Rechten 839Verschlüsseln von Datenbanken 841
Einbinden externer Tabellen 843Erstellen einer Verbindung 843Aktualisieren einer Verbindung 844Löschen einer Verbindung 845
Replizieren von Datenbanken 845Begriffe 845Aufbau einer Replikatgruppe 846Probleme bei Replikationen 846Vorbereitungen zur praktischen Umsetzung 847Replikat erstellen 848Abgleich von Kopie und Original 848
Datenbankanalyse 849Verwendung von GetSchema 849Datenbankeigenschaften mit ADOX ermitteln 852
20
Tabellen mit ADOX bestimmen 853Sichten/Abfragen mit ADOX bestimmen 855Nutzer und Nutzergruppen auslesen 858Nutzer- und Gruppenberechtigungen ermitteln 860
Weitere Aufgabenstellungen 862Access-Datenbanken reparieren/komprimieren 862Distribution von Access-Datenbanken 863
Access 2007-Datenbanken 863Zugriff auf die Datenbanken 863Neuer Connectionstring 864Übersicht neue Datentypen 864Arbeiten mit den DAOs 865Memofeld mit Archiv-Funktion 866Anlage-Feld 868Rich-Text-Feld 874Multivalue-Feld (MVF) 875
Access 2010-Datenbanken 879Download/Installation Access 2010 Database Engine 880Berechnete Spalten 881Trigger/Datenmakros 883Unterschiede Access 2007/2010 885
How-to-Beispiele 88612.1 ... ADO installieren? 88612.2 ... Access-Datenbanken exklusiv öffnen? 88612.3 ... die Zugriffsgeschwindigkeit auf Access-Datenbanken erhöhen? 88612.4 ... Access-Datenbanken im Netzwerk verwenden? 88612.5 ... alle aktiven Verbindungen zur Datenbank auflisten? 88712.6 ... eine Spalte mit eindeutigen Zufallswerten erzeugen? 88712.7 ... das Datenbank-Kennwort ändern? 88812.8 ... Abfragen über mehrere Datenbanken realisieren? 88912.9 ... die Beschreibung von Datenbankfeldern abrufen? 889
13 Microsoft SQL Server-Einstieg 891Übersicht 892
SQL Server Express 892SQL Server Compact 893Unterschiede SQL Server Express/SQL Server/Jet-Engine 893Client- versus Fileserver-Programmierung 895Die wichtigsten Tools 897Vordefinierte Datenbanken 901Einschränkungen 901Weitere SQL Server-Funktionen im Kurzüberblick 902Zugriff aus Visual Basic 904Einrichten der Anbindung (Assistent) 905Einrichten der Verbindung (Quellcode) 906
Transact-SQL 907Schreibweise 908Kommentare 908Zeichenketten 908
I n h a l t s v e r z e i c h n i s
x Variablen deklarieren/verwenden 909Bedingungen mit IF/ELSE auswerten 910Verwenden von CASE 911Verwenden von WHILE ... BREAK/CONTINUE 911Datum und Uhrzeit in T-SQL 912Verwenden von GOTO 913Fehlerbehandlung 913
Datenbanken mit DMO verwalten 913Einbindung 914Einführungsbeispiel 914
SQL Server Management Objects (SMO) 915Einbindung 915Einführungsbeispiel 916Anmelden am Server 918
Datensicherheit auf dem Microsoft SQL Server 919Überblick Sicherheitsmodell 919Verwalten mit dem SQL Server Management Studio 922Verwalten mit T-SQL 925
How-to-Beispiele 92913.1 ... den Netzwerkzugriff für den SQL Server Express aktivieren? 92913.2 ... die SQL Server Express-Version erkennen? 93113.3 ... die SQL Server Express-Version administrieren? 93113.4 ... alle Nutzer einer Datenbank ermitteln? 93213.5 ... alle registrierten Microsoft SQL Server ermitteln? 93313.6 ... alle Datenbanken und deren Tabellen ermitteln? 93413.7 ... eine Tabelle löschen? 93413.8 ... eine Tabelle mit den SMO erzeugen? 93513.9 ... die Anzahl der Datensätze beschränken? 93613.10 ... Platzhalterzeichen in T-SQL verwenden? 93713.11 ... Teilstrings erzeugen? 93813.12 ... Leerzeichen entfernen? 93813.13 ... mit DROP INDEX jeden Index löschen? :.- 93813.14 ... @@ERROR korrekt verarbeiten? 93913.15 ... die Anzahl der Datensätze einer Abfrage bestimmen? 93913.16 ... IFF ersetzen? 93913.17 ... mit Bedingungen Feldinhalte formatieren? 94013.18 ... Abfragen mit Platzhaltern beschleunigen? 94013.19 ... die Groß-/Kleinschreibung berücksichtigen? 94113.20 ... das Ergebnis einer Stored Procedure speichern? 94113.21 ... eine Datenbank umbenennen? 94213.22 ... eine Datenbank zwischen Servern verschieben? 94213.23 ... eine Datenbankstruktur kopieren? 94313.24 ... nach dem Löschen IDENTITY auf 0 setzen? 94413.25 ... eine Tabellenspalte umbenennen? 94413.26 ... Unterschiede zwischen temporären Tabellen erkennen? 94513.27 ... Daten aus verschiedenen Datenbanken anzeigen? 94513.28 ... die PRINT-Anweisung in VB anzeigen? 945
Übersichten 946Datentypen 946Unterschiede Access- und SQL Server-Datentypen 947
14 Microsoft SQL Server-Programmierung 949Praktisches Arbeiten mit dem SQL Server 950
Erstellen von SQL Server-Datenbanken 950Erzeugen und Verwalten von Tabellen 954Datenbankdiagramme 959Erzeugen und Verwenden von Sichten (Views) 961Gespeicherte Prozeduren verwenden 962Programmierung/Verwendung von Triggern 966Volltextabfragen 970Die Verwendung von FileStream-Storage 976Massenkopieren 982Datenbanken sichern und wiederherstellen 984
Fehlerbehandlung 989Das Fehlermodell 989Verwenden von @@ERROR 990Verwenden von RAISEERROR 991Fehlerbehandlung mit TRY...CATCH 991Fehlerbehandlung mit ADO.NET 993
Weitere Features des Datenzugriffs unter ADO.NET 995Alle verfügbaren SQL Server ermitteln 995Asynchrone Befehlsausführung 995Benachrichtigungen über Datenänderungen 997Multiple Active Resultsets (MARS) 997
CLR-Integration im SQL Server 998Grundsätzlicher Ablauf 999CLR-Unterstützung aktivieren 999Assembly erstellen 1000Benutzerdefinierte Funktionen (UDF) ". 1003Stored Procedures 1004Aggregat-Funktionen 1010Trigger in VB realisieren 1012Mehr Sicherheit 1013Fazit 1014
XML-Unterstützung 1014Der XML-Datentyp 1015XML-Daten mit SELECT erzeugen 1016XML-Abfragen 1020Der Clientzugriff auf die XML-Daten 1022
How-to-Beispiele 102514.1 ... Aktualisierungs- und Löschweitergaben realisieren? 102514.2 ... Änderungen in Tabellen protokollieren? 102514.3 ... SQL-Anweisungen debuggen? 102614.4 ... ein SqlConnection-Objekt programmieren? 102814.5 ... eine Gespeicherte Prozedur aufrufen? 103114.6 ... mit Table Value-Parametern arbeiten? 1034
Inhaltsverzeichnis 23
14.7 ... mit Stapel-Abfragen arbeiten? 103714.8 ... Query Notifications einrichten und auswerten? 103814.9 ... die MARS-Technologie kennen lernen? 104314.10 ... Row-Constructors verwenden? 1047
15 SQL Server Compact 1049Einsatzszenarien 1050
Einschränkungen 1050Fähigkeiten/Vorteile 1051
Installation 1051Datenbanken erstellen, verwalten und einbinden 1053
Visual Studio 1053SQL Server Management Studio 1054Codebasiert mit VB 1055Tabellen und Referenzen erstellen 1057
Zusammenarbeit mit dem DataSet 1060Datenzugriff mit SqlCeResultSet 1061
Datenbindung 1061Das ResultSet konfigurieren 1063Datensätze löschen 1063Datensätze einfügen 1064Datensätze bearbeiten 1064Navigation zwischen den Datensätzen 1065
Zugriff mit LINQ to SQL 1066Anbinden einer vorhandenen Datenbank 1066Erstellen einer neue Datenbank 1067Ergänzungen 1068
Zugriff per Entity Data Model 1069Model First-Entwurf 1069Database First-Entwurf 1070
Der Einsatz als Local Database Cache 1071Beispiel Einweg Synchronisation 1071Bidirektionale Synchronisation 1074
Tipps & Tricks 1078Datenbank auf Remotelaufwerk nutzen 1078Performance verbessern 1078Datenbank von schreibgeschütztem Medium starten 1079Datenbankinformationen abrufen 1079Datenbank reparieren 1080Datenbank komprimieren 1081Datenbank nachträglich verschlüsseln 1082Ein Datenbank-Backup realisieren 1082Fehler in der Visual Studio-IDE vermeiden 1082Daten vom SQL Server zum SQL Server Compact zu kopieren 1082Distribution 1083Weitere Hilfe 1084
16 SQLite - Ein Mini ganz groß iO85Was ist eigentlich SQLite? 1086
Vorteile 1087Nachteile 1087
Vorbereitungen 1088Download/Installation 1088Integration in Ihr Projekt 1088
Praktische Aufgabenstellungen 1089Erzeugen neuer Datenbanken mit Visual Studio 1089Alternative Möglichkeit zum Administrieren der Datenbank 1090Datenbank/Datenbankobjekte per Code erstellen 1092Mögliche Connectionstring-Parameter 1093Datenbankzugriff per DataSet realisieren 1094Besonderheit: InMemory-Datenbank 1096Datenzugriff mit dem Entity Framework 1097SOUNDEX verwenden 1098Volltextabfragen realisieren 1098Eigene skalare Funktionen in VB realisieren 1101Eigene Aggregat-Funktionen in VB realisieren 1103
Tipps & Tricks 1104Für Liebhaber der Kommandozeile — Sqlite3.exe 1104Eine Beispieldatenbank herunterladen 1105Eine Datenbank ver- und entschlüsseln 1105Eine verschlüsselte Datenbank öffnen 1106Testen ob Tabelle vorhanden ist 1106Die Datenbank defragmentieren 1107Mehrere Datenbanken verknüpfen 1107
17 LINQ to SQL 1109Übersicht .1110
Das LINQ to SQL-Datenmodell 1110Der DataContext 1111Die Entitäts-Klassen 1112Umstiegsbeispiel für den »ehemaligen« SQL-Programmierer 1113Datenbank-Entwurfskonzepte 1115
Der schnelle Weg zu den SQL Server-Daten 1115Der LINQ to SQL-Designer 1115Die .DBML-Datei 1116Die Designer.vb-Datei 1118Ein erster Test und ein Blick unter die Motorhaube 1120SQL-Debugging leicht gemacht 1121
Der steinige Weg zur Persistenz 1123Das Datenmodell entwickeln 1123Erzeugen der Datenbank und Herstellen der Verbindung 1125Ein paar Gedanken zum Erstellen neuer Datenbanken 1126
Datenauswahl/Datentypen 1126Einfache Datentypen 1126IQueryable(Of T) 1127Datenauswahl basierend auf Detaildaten 1127
lnhaltsverzeichnis
Bereichsauswahl (Paging) 1128Probleme mit FirstQ 1129
Datenbindung 1130Datenquelle hinzufügen 1130Anzeige von Detaildaten 1132Listendarstellung mit anonymen Typen optimieren 1133Lazy Loading/Prefetch/Delay Loaded 1133ObjectTracking ausschalten 1136
Bearbeiten und Aktualisieren 1136Editieren 1136Fehler beim Aktualisieren 1137Konflikte beim Aktualisieren von Datensätzen 1138Lokale Datenaktualisierung per DataContext 1142Neue Datensätze erzeugen 1143Löschen : 1146
Eingabevalidierung 1147Prüfung auf Feld-Ebene (Eigenschaft) 1148Prüfung auf Datensatz-Ebene (Objekt) 1149Überprüfung vor Update, Insert oder Delete 1149
Stored Procedures 1150Allgemeine Verwendung 1150Skalare Rückgabewerte 1151Typisierte Rückgabewerte 1152Insert/Update/Delete per Stored Procedure 1153
Weitere LINQ to SQL-Features 1155Direkte SQL-Programmierung 1155Verwendung der partiellen Klassen/Methoden 1156
Schlussbemerkung 1158
18 Arbeiten mit dem Entity Framework 1159Das Grundkonzept 1160
Konzeptionelle Schicht 1161Logische Schicht 1163Zuordnungsschicht 1163Wie erstelle ich die Schema-Dateien? 1164Das Gesamtmodell im Überblick 1164Wie kann mit dem EDM gearbeitet werden? 1165Entwurfsmöglichkeiten 1166
Unsere Beispieldatenbank 1167Das Datendiagramm 1168Weitere Tabellen 1168
Der EDM-Entwurf 1170Der EDM-Assistent 1170Der EDM-Designer 1173Weitere Fenster des EDM-Designers 1176Stored Procedures importieren 1178Komplexe Typen 1180Die erzeugten Klassen/partielle Klassen 1182Der Model-First-Entwurf 1184
Einsatz des EntityClient für die Datenabfrage 1186Ein Überblick 1186Einsatzbeispiel 1187Connection aufbauen 1188Parameterabfragen realisieren 1189Wann sollten Sie diese Variante nutzen? 1189
Verwenden der Objektdienste 1190Eine Übersicht 1190Verwendung von eSQL 1191Verwendung von LINQ to Entities 1192
Kurzeinführung in Entity SQL (eSQL) 1194Für den Umsteiger: Unterschiede zu T-SQL 1194Für den Einsteiger 1195
Praktisches Arbeiten mit dem EDM 1202Skalare Werte abfragen 1202Abfrage mit Projektion 1203Detaildaten/Verwendung der Navigationseigenschaften 1203Lazy Loading 1204Wie funktioniert das explizite Laden? 1206Was passiert beim vorzeitigen Laden (Eager-Load)? 1207Delay Loaded 1209Zugriff mit Paging 1209Abrufen einzelner Entitäten 1210Lokale Datenaktualisierung per ObjectContext 1211Einfaches Einfügen von Datensätzen 1212Abrufen eines Identity-Wertes nach dem Einfügen 1213Einfügen von Datensätzen in l:n/m:n-Beziehungen 1214Bearbeiten von Entitäten 1215Übernahme der Daten mit SaveChanges 1216Löschen von Daten 1217Verwendung von Stored Procedures 1219Funktionsimporte ~>. 1221Die Eigenschaft EntityState 1222Verwendung des ObjectStateManagers 1222Anhängen von Objekten 1224Arbeiten mit Vererbung 1226POCO-Unterstützung 1229Validierung 1230Verwenden der partiellen Klassen 1233Abschließender Hinweis 1235
How-to-Beispiele 123718.1 ... den ConnectionString anpassen? 123718.2 ... LINQPad verwenden? 123918.3 ... ChangeTracking deaktivieren? 124218.4 ... SQL-Anweisungen analysieren? 124218.5 ... direkte SQL-Statements an den Server senden? 124418.6 ... weitere Beispiele finden? 1245
I n h a l t s v e r z e i c h n i s
19 WCF - eine Einführung 1247Die Programmierung verteilter Systeme 1248
Intranet oder Internet? 1248Die Vorgänger 1249WCF - die neue Technologie 1250
Allgemeiner Aufbau eines WCF-Systems 1252WCF-Assemblies - die verfügbaren Bausteine 1252Service, Host und Client 1252Nachrichtenaustausch 1254
Das ABC der WCF-Endpunkte 1254Verträge 1255Bindungen 1256Adressen 1259
Programmierung eines WCF-Dienstes 1260Quellcode als Klassenbibliothek 1260Das <ServiceContract>-Attribut 1261Das <OperationContract>-Attribut 1262Service Klassen ohne Vertrags-Interfaces 1263
Der WCF-Host 1263Vorbereitungen 1264Die App.config 1264Die ServiceHost-Klasse 1265Festlegen der Basisadressen 1265Weitere Details der ServiceHost-Klasse 1267Das <system.serviceModel>-Element 1268Austausch der Metadaten (MEX) 1268
Der WCF-Client 1271Vorbereitungen 1271Verwenden von SvcUtil.exe 1272Einsatz des Proxy-Generators von Visual Studio 2010 1274
Verbesserungen unter WCF 4.0 1275Standard-Endpunkte T 1276Multiple Bindungen 1276Standardmäßige MEX-Konfiguration 1277Projektvorlage WCF-Dienstbibliothek ' 1278Einsatz von WcfTestClient.exe 1280App.config mit SvcConfigEditor bearbeiten 1281
How-to-Beispiele 128219.1 ... einen WCF-Webdienst mit Datenzugriffsschicht entwickeln? 128219.2 ... einen Client für unseren WCF-Webdienst entwickeln? 128819.3 ... was tun, wenn der IIS nicht funktioniert? 1291
20 Einführung WCF Data Services 1293Einführung 1294
Warum WCF Data Services? 1294Vor- und Nachteile 1297Und was ist OData? 1298Was ist neu in .NET 4.0? 1299Übersicht der OData-Abfrageoptionen 1299
Inhaltsverzeichnis
Praktisches Arbeiten mit den WCF Data Services 1303Ein erster Data Consumer 1303Verwendung von CreateQuery(Of T) 1306Verwendung von Execute(Of T) 1307Asynchrone Verarbeitung 1307Anzahl der Entitäten bestimmen 1309Verwendung der DataServiceCollection 1310Eigene Methoden über den Data Service bereitstellen 1312Freigabe der Schnittstelle regeln 1315Verwendung von Fiddler 1315
How-to-Beispiele 131720.1 ... einen einfachen WCF Data Service erstellen? 131720.2 ... einen Silverlight-Client mit WCF Data Services anbinden? 1318
2tsj<omplexbeispiel Webshop 1327rundkonzept 1328
Aufgabenstellung 1328Unterschiedliche Frontends für Kunden und Verkäufer 1329
T3ie Datenbankstruktur 1329Datenbankdiagramm 1329Tabellen 1331Stored Procedures 1333Ansichten/Views 1337Bemerkungen 1337
Entwurf Webshop-Projekt/Datenbank 1338Stammdatenverwaltung mit Webdienst 1339
Das Interface 1340Entwurf Webdienst 1340Die Methoden im Einzelnen 1341
Windows-Verwaltungsfrontend 1346Entwurf 1346Verbindung zum Webdienst herstellen - 1346Oberflächengestaltung 1347Implementierung Stammdatenverwaltung 1349Test Stammdatenverwaltung 1352Typisiertes DataSet für den Report 1353Reportentwurf 1354Reporteinbindung 1357Filtern der Artikelgruppen 1359Kunden-Tabelle 1359
ASP.NET-Kundeninterface 1360Übersicht 1360Entwurf Default.aspx 1361Vorbereitung Benutzersteuerelemente 1367Welcome.ascx 1369Shop.ascx 1370Warenkorb.ascx 1373Anmeldung.ascx 1377Bestellung.ascx 1378