datenbank- programmierung mit visual c# 2012 (buch + e- · pdf filedatenbank- programmierung...

Download Datenbank- Programmierung mit Visual C# 2012 (Buch + E- · PDF fileDatenbank- Programmierung mit Visual C# 2012 (Buch + E- Book) Grundlagen, Rezepte, Anwendungsbeispiele von Walter

If you can't read please download the document

Upload: leminh

Post on 06-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • Datenbank-Programmierung mit Visual C# 2012 (Buch + E-Book)

    Grundlagen, Rezepte, Anwendungsbeispiele

    vonWalter Doberenz, Thomas Gewinnus

    1. Auflage

    Datenbank-Programmierung mit Visual C# 2012 (Buch + E-Book) Doberenz / Gewinnus

    schnell und portofrei erhltlich bei beck-shop.de DIE FACHBUCHHANDLUNG

    Thematische Gliederung:

    Microsoft Programmierung

    Microsoft 2013

    Verlag C.H. Beck im Internet:www.beck.de

    ISBN 978 3 86645 466 8

    Inhaltsverzeichnis: Datenbank-Programmierung mit Visual C# 2012 (Buch + E-Book) Doberenz / Gewinnus

  • 10 SQLite ein Mini ganz gro

    Kapitel 10

    SQLite ein Mini ganz gro

    667

    In diesem Kapitel:

    Was ist eigentlich SQLite? 668

    Vorbereitungen 670

    Datenbank-Tools 672

    Praktische Aufgabenstellungen 677

    SQLite die Datenbank fr Windows Store Apps 695

    Tipps & Tricks 703

    Fazit 715

  • H IN W EIS

    W W W

    Kapitel 10: SQLite ein Mini ganz gro

    In diesem Kapitel wollen wir Ihnen eine sinnvolle Alternative sowohl fr den meist berdimensioniertenEinsatz des Microsoft SQL Servers, egal ob Express oder LocalDB, als auch fr die Verwendung von Micro-soft Access-Datenbanken als lokale Datenspeicher vorstellen.

    Die Hauptforderungen nach

    einfacher Installation/Distribution

    Untersttzung bekannter Technologien (ADO.NET, LINQ to SQL, Entity Framework)

    Aufhebung der Restriktionen bezglich der maximalen Datenbankgre1

    Untersttzung fr Datenbindung

    gute Performance

    Plattformunabhngigkeit des Datenformats

    und, last but not least, die Datensicherheit

    werden von dem im Folgenden vorgestellten SQLite in jedem Fall erfllt. Das hat mittlerweile auch Micro-soft erkannt SQLite fungiert neuerdings als Mini-Datenbank fr die Windows Store Apps2. Grund fr die-sen Rckgriff auf eine externe Lsung ist der gnzliche Mangel an hauseigener Datenbankuntersttzung frdiese Apps, die vorhandene IndexedDB ist fr C#-Apps derzeit nicht nutzbar.

    Wir beschrnken uns an dieser Stelle ganz bewusst auf lokale Datenspeicher, viele Anwendungen erfordernnach wie vor keine Server-Infrastruktur und werden mit viel zu viel Ballast (zustzliche Dienste, Probleme mit UAC, Daten-sicherung etc.) beim Kunden abgeworfen. Administratoren und Anwender sind Ihnen sicher dankbar dafr, wenn Sie eineeinfach installierbare Anwendung anbieten, die nicht gleich das gesamte System umgrbt, um ein paar Datenstze zuspeichern. Vielfach reicht auch schon eine XML-Datei, aber das ist eine andere Geschichte.

    Was ist eigentlich SQLite?Bei SQLite handelt es sich um eine Desktop-Datenbankengine, die im Gegensatz zum SQL Server ohne eineextra Server-Anwendung auskommt. Die komplette Funktionalitt wird von einer DLL bereitgestellt, dieAnwendung greift direkt auf den eigentlichen Datenspeicher zu. Der Clou an dieser Lsung: Sie knnentrotz allem mit SQL als Abfragesprache arbeiten, mssen sich also nicht erst an eine neue Schnittstellegewhnen3.

    Einen grundstzlichen berblick zum Datenformat, zur verwendeten SQL-Syntax und zur DLL-Schnitt-stelle bietet Ihnen die folgende Website

    http://www.sqlite.org/

    1 Insbesondere dieser Punkt drfte fr viele Programmierer von Interesse sein, ist doch das Datenlimit von 2 GByte bei Access-Daten-banken nicht mehr zeitgem.

    2 Zumindest so lange, bis Microsoft endlich eine eigen Lsung auf die Beine gestellt hat.

    3 Am besten knnen Sie SQLite noch mit dem SQL Server Compact vergleichen, beide haben einen konzeptionell hnlichen Ansatz.

    668

  • H IN W EIS

    Im Folgenden wollen wir Ihnen mit einer unverbindlichen Gegenberstellung der Vor- und Nachteile dieEntscheidung fr oder gegen SQLite erleichtern.

    VorteileDavon bietet SQLite jede Menge:

    Die Datenbankengine ist winzig im Vergleich zu den etablierten Produkten (die DLL hat lediglich eineGre von ungefhr 1 MB).

    Es ist keinerlei administrativer Aufwand notwendig, wenn Sie mal vom Speichern der eigentlichenDatendatei absehen.

    Das Format ist ideal fr die Verwendung im Zusammenhang mit dem Compact Framework, da geringerRessourcenbedarf.

    Alle Daten sind in einer Datei zusammengefasst, endlose Dateilisten, wie bei dBase oder Paradox, sindnicht zu befrchten.

    Die komplette Engine befindet sich in einer bzw. zwei Dateien (Compact Framework).

    SQLite implementiert eine Groteil der SQL92-Spezifikation, Sie knnen also Ihre SQL-Know-Howweiter nutzen und mssen nicht umlernen.

    SQLite-Datenbanken sind plattformkompatibel, d.h., Sie knnen die Datei problemlos mit anderen Sys-temen auslesen und bearbeiten. Fr fast jede Plattform und Programmiersprache werden entsprechendeSchnittstellen angeboten. Dies ist im Zusammenhang mit dem Datenaustausch zu Android- und iOS-Anwendungen interessant.

    SQLite ist in einigen Punkten schneller1 als eine entsprechende SQL Server Compact-Datenbank und dieDateien sind kleiner. Im Gegensatz zum SQL Server Compact kann man bei einer maximalen Daten-bankgre von 2 Terabyte kaum noch von einer Grenbegrenzung sprechen.

    Datenbanken knnen verschlsselt werden.

    Untersttzung fr Trigger, Views und Constraints.

    SQLite untersttzt verschiedene Formen der Volltextsuche, ein Feature, auf das wir z.B. bei Access-Datenbanken schon lange warten.

    Es sind ADO.NET 2.0 Provider verfgbar, auch die Verwendung des Entity Frameworks ist mglich.

    Optional ist auch ein Zugriff per ODBC-Treiber mglich.

    SQLite ist komplett kostenlos, der Quellcode ist ebenfalls verfgbar.

    SQLite ist eine der wenigen Datenbankengines, die Sie derzeit in einer WinRT-App berhaupt zumLaufen bekommen.

    Insbesondere der letzte Punkt ist ein echtes Killerfeature, wir gehen ab Seite 695 auf die spezifische Lsungim Rahmen von WinRT ein.

    1 Hier kommt es jedoch auf eine sinnvolle Indizierung der Tabellen an, andernfalls bricht die Performance recht schnell ein.

    669Was ist eigentlich SQLite?

  • W W W

    H IN W EIS

    Kapitel 10: SQLite ein Mini ganz gro

    NachteileJede Medaille hat zwei Seiten und so mssen Sie auch bei SQLite mit einigen Einschrnkungen und Nach-teilen leben.

    Grundstzlich sollten Sie immer das Konzept als Desktop-Datenbank im Auge behalten. Sie knnenzwar mit mehreren Anwendungen auf die Datendatei zugreifen, allerdings ist der Schreibmechanismusder Engine etwas eigenwillig, nur ein Prozess kann exklusiv auf die Datenbank zugreifen, Lesezugriffewerden in dieser Zeit geblockt.

    Keine Untersttzung fr Stored Procedures und UDFs, Sie knnen jedoch eigene Scalar- und Aggre-gat-Funktionen schreiben, die als Callback in Ihrer Anwendung abgelegt sind.

    Es sind keine geschachtelten Transaktionen mglich.

    Keine direkte Replikationsuntersttzung, Sie knnen jedoch eine zweite Datenbank mit ATTACH ein-binden und nachfolgend die Daten mit einer Abfrage ber die betreffenden Tabellen synchronisieren.

    Keine Untersttzung fr Nutzer- und Rechteverwaltung, es handelt sich um eine Desktop-Datenbank,die Sie jedoch verschlsseln knnen.

    VorbereitungenHaben Sie sich fr SQLite als Datenformat entschieden, ist der nchste Schritt die Auswahl eines geeignetenDatenproviders, der uns auch unter .NET wie gewohnt zur Verfgung steht.

    Download/InstallationDie Autoren haben sich in diesem Fall fr System.Data.SQLite, einen kostenlosen Wrapper und ADO-.NET 2.0/3.5-Provider, entschieden, da dieser sehr gut dokumentiert und auch aktuell ist. Ganz nebenbei istauch eine entsprechende Integration in Visual Studio vorhanden. Sie knnen also die Datenbanken, wievom Microsoft SQL Server gewohnt, in der Visual Studio-IDE bearbeiten und abfragen (Server-Explorer).

    Herunterladen knnen Sie die Installation unter der Adresse:

    http://system.data.sqlite.org/

    Laden Sie das Setup for 32-bit Windows (.NET Framework 4.5) herunter, wenn Sie ber Visual Studio 2012verfgen, fr Visual Studio 2010 nutzen Sie das Setup for 32-bit Windows (.NET Framework 4.0).

    Achten Sie darauf, fr welche Framework-Version Sie die Installation herunterladen!

    Nach dem Download fhren Sie das Setup-Programm aus, um die Designtime-Untersttzung in Visual Stu-dio zu integrieren.

    Die Besonderheit dieses Projekts ist eine Untersttzung sowohl fr das komplette, als auch fr das Com-pact-Framework. Arbeiten Sie mit dem normalen Framework, wird fr Ihr Projekt bzw. das Zielsystemlediglich die Datei System.Data.SQLite.DLL bentigt, in dieser befindet sich die SQLite-Engine und der fr

    670

  • H IN W EIS

    W W W

    uns wichtige .NET-Wrapper. Fr den Einsatz mit dem Compact Framework mssen Sie die Dateien Sys-tem.Data.-SQLite.DLL (Unterordner \\CompactFramework) und SQLite.Interop.066.DLL auf dem Zielsys-tem bereitstellen.

    System.Data.SQLite ist lediglich ein .NET-Wrapper fr die originale SQLite-Engine (aktuell 3.7.15.2), Sieprofitieren also auch automatisch von Verbesserungen und Neuerungen an der SQLite-Engine.

    Mehr ber die SQLite-Engine erfahren Sie unter folgender Adresse:

    http://www.sqlite.org/docs.html

    Integration in Ihr C#-ProjektMchten Sie den Provider in Ihr Projekt integrieren, fgen Sie zunchst einen Verweis auf die AssemblySystem.Data.SQLite hinzu und legen die Eigenschaft Lokale Kopie auf True fest. Bentigen Sie zustzlichauch Untersttzung fr LINQ, fgen Sie noch die Assembly System.Data.SQLite.Linq hinzu.

    Der einfachste Weg zur Integration in Ihr C#-Projekt fhrt jedoch ber den NuGet-Manager. Whlen Sieeines der vier mglichen Pakete und klicken Sie auf Installieren:

    Abbildung 10.1 Installation per NuGet-Paket

    Sollten Sie das Paket System.Data.SQLite (x86/x64) gewhlt haben, werden Ihrem Projekt zwei Unterver-zeichnisse x86 und x64 hinzugefgt, in denen jeweils die plattformspezifische SQLite.Intero