24
Datenbank-Programmierung mit Visual Basic 2010 Grundlagen, Rezepte, Anwendungsbeispiele von Walter 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

Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

Embed Size (px)

Citation preview

Page 2: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 3: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 4: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 5: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 6: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 7: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 8: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 9: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 10: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 11: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 12: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 13: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 14: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 15: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 16: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 17: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 18: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 19: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 20: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 21: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 22: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 23: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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

Page 24: Datenbank-Programmierung mit Visual Basic · PDF fileDatenbank-Programmierung mit Visual Basic 2010 Grundlagen,€Rezepte,€Anwendungsbeispiele von Walter Doberenz, Thomas Gewinnus

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