Upload
ngoxuyen
View
230
Download
4
Embed Size (px)
Citation preview
Datenbank-Programmierung mit Visual Basic 2010
Grundlagen, Rezepte, Anwendungsbeispiele
vonWalter Doberenz, Thomas Gewinnus
1. Auflage
Datenbank-Programmierung mit Visual Basic 2010 – Doberenz / Gewinnus
schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
Thematische Gliederung:
Programmier- und Skriptsprachen
Microsoft 2010
Verlag C.H. Beck im Internet:www.beck.de
ISBN 978 3 86645 445 3
HINWEIS
Inhaltsverzeichnis
Die Bonuskapitel 3, 11 und 21 finden Sie als PDF-Datei auf der beiliegenden CD. Im Inhaltsverzeichnis sind siedurch ein CD-Symbol gekennzeichnet.
Vorwort ................................................................................ 31
1 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
2 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
3 SQL 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
8
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? ................................... 1993.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
4 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
9
Inhaltsverzeichnis
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 ....................................................................... 244Optimistisches Konkurrenzmodell .................................................... 245
Das DataReader-Objekt .................................................................. 245DataReader 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
10
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 DataView ........................................................... 332Erzeugen eines DataView ............................................................. 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
11
Inhaltsverzeichnis
Typisierte DataSets ...................................................................... 339Was ist ein typisiertes DataSet? ........................................................ 339Das Datenquellen-Konzept ........................................................... 341Typisierte 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 DataView sortieren und filtern? ...................................... 3585.5 ... nach Datensätzen suchen? .................................................... 3595.6 ... vereinfacht nach Datensätzen suchen? ......................................... 3625.7 ... zwischen DataTable und DataReader umwandeln? .............................. 3645.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
6 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
12
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 ... 1:n-Beziehungen per Drag & Drop-Datenbindung anzeigen? .................... 4456.9 ... die Spalten im DataGridView formatieren? ..................................... 4476.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
7 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 Collection ........................................................ 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
13
Inhaltsverzeichnis
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
8 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-Collections ............................................. 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
14
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 .......................................................................... 572FormView ........................................................................... 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
15
Inhaltsverzeichnis
8.9 ... korrekte Währungswerte im GridView anzeigen? ............................... 6348.10 ... Eingabewerte im GridView validieren? ......................................... 6358.11 ... einen E-Mail-Versand in ASP.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
16
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
11 Crystal Reports ........................................................................ 747Übersicht ............................................................................... 748
Installieren .......................................................................... 748Ein Einsteigerbeispiel ................................................................. 749Der Report-Designer ................................................................. 755Der Reportaufbau .................................................................... 756Die Druckvorschau-Komponente ..................................................... 757
Wichtige Funktionen im Überblick ....................................................... 758Formelfelder ......................................................................... 758Parameterfelder ...................................................................... 759Gruppennamenfelder ................................................................ 760
17
Inhaltsverzeichnis
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
18
Inhaltsverzeichnis
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
19
Inhaltsverzeichnis
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
20
Inhaltsverzeichnis
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
21
Inhaltsverzeichnis
Ü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
22
Inhaltsverzeichnis
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
23
Inhaltsverzeichnis
16 SQLite – Ein Mini ganz groß .......................................................... 1085Was 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
24
Inhaltsverzeichnis
Bereichsauswahl (Paging) ............................................................. 1128Probleme mit First() ................................................................. 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
25
Inhaltsverzeichnis
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 1: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
26
Inhaltsverzeichnis
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 ................................................................. 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
27
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
21 Komplexbeispiel Webshop ............................................................ 1327Grundkonzept .......................................................................... 1328
Aufgabenstellung .................................................................... 1328Unterschiedliche Frontends für Kunden und Verkäufer ................................. 1329
Die 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
28
Inhaltsverzeichnis
Danke.ascx .......................................................................... 1381Kundenkonto.ascx ................................................................... 1382NeuerKunde.ascx .................................................................... 1382
Abschlusstest und Bemerkungen .......................................................... 1384Test ................................................................................. 1384Abschlussbemerkungen .............................................................. 1385
A Glossar ................................................................................ 1387
B Wichtige Dateiendungen .............................................................. 1393
C Northwind versus Nordwind .......................................................... 1395
Stichwortverzeichnis ................................................................... 1399
29