SQLite als Backend

Wenn Sie ein Abonnement des Magazins 'DATENBANKENTWICKLER' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

SQLite als Backend

Der SQL Server kommt als mächtiges Installationspaket, und selbst die schlanke Variante LocalDb muss erst einmal installiert werden, bevor die Anwendung auf dem Zielsystem auf Daten zugreifen kann. Schlank und ohne eigene Installation – das wären gute Eigenschaften für ein Datenbanksystem für den Einsatz in einfachen Desktop-Anwendungen. Die Lösung lautet SQLite: Diese Programmbibliothek können Sie einfach zum Projekt hinzufügen und es mit der Anwendung auf dem Zielrechner installieren. Und das Beste: SQLite unterstützt sogar das Entity Framework.

SQLite – wozu?

Unser primärer Anlass, einmal nach Alternativen zum SQL Server oder zu LocalDb zu suchen, sind die Beispielprojekte zu diesem Magazin. Wenn diese eine Datenbank enthalten, sind immer der eine oder andere Schritt nötig, bevor Sie die Beispiele auf Ihrem Rechner ausprobieren können. Und das ist selbst der Fall, wenn bereits eines der Microsoft-Datenbanksysteme auf ihrem Rechner installiert ist. Welche Voraussetzungen sollte das gesuchte Datenbanksystem also haben? Am wichtigsten ist natürlich, dass wir damit weiterhin die Techniken vorstellen können, die Sie auch bei Verwendung von Microsoft-Datenbanken nutzen – also Beispielsweise der Einsatz des Entity Framework als Schnittstelle zwischen Anwendung und Datenbank. Der zweite Punkt ist, dass eine möglichst einfache Installation der Programmdateien des Datenbanksystems möglich ist oder am besten gar keine. Stattdessen sollte das Datenbanksystem am besten direkt im Projektordner an den Zielrechner übergeben werden und bereits fertig konfiguriert sein.

Wir hätten uns natürlich auch mit einer Access-Datenbank als Backend zufrieden gegeben, denn Access dürfte bei der Zielgruppe dieses Magazins auf dem Rechner installiert sein. Allerdings erfüllt eine Access-Datei gleich zwei Punkte nicht: Erstens ist für die Verwendung immer noch eine Access-Installation auf dem Zielrechner nötig. Dies ist zwar aufgrund der Runtime-Version, die kostenlos weitergegeben werden darf, möglich, aber besser ist natürlich ein Datenbanksystem, das komplett ohne Installation auskommt. Zweitens können wir zwar per ADO.NET auf Access-Datenbanken zugreifen, aber spätestens, wenn das Entity Framework zum Einsatz kommen soll (und das Entity Framework wird uns in diesem Magazin noch eine Weile begleiten), wird es eng – es gibt nämlich keine Implementierung, die den Zugriff auf die Tabellen einer Access-Datenbank erlaubt. Darüber sind wir dann auf SQLite gestoßen. Diese Datenbank kommt im Wesentlichen in Form einer Programmbibliothek, die außerdem auch noch nur wenige hundert Kilobyte groß ist. Und es hat eine weitere Gemeinsamkeit mit Access: Die eigentlichen Datenbanken kommen in Form einer einzigen Datei, in diesem Fall mit der Dateiendung .db.

SQLite ist nicht von ungefähr so kompakt: In der Regel wird es etwa in Apps für Mobiltelefone eingesetzt. Die Kompaktheit hat natürlich auch ihren Preis: SQLite enthält längst nicht alle Funktionen, die ein »großes« Datenbanksystem wie etwa SQL Server bietet. Für den Einsatz in unseren Beispieldatenbanken reichen die Funktionen aber allemal aus. In den folgenden Abschnitten erfahren Sie verschiedene Dinge über SQLite:

  • mit welchem Tool Sie SQLite-Datenbanken erstellen und bearbeiten können,
  • wie Sie SQL Server-Datenbanken nach SQLite migrieren,
  • wie Sie SQLite in .NET-Projekten einsetzen und ein Entity Data Model auf Basis einer SQLite-Datenbank erstellen und
  • wie Sie eine Anwendung mit SQLite-Datenbank weitergeben können.

SQLite-Tools

Bevor wir überhaupt mit unserer Anwendung auf eine SQLite-Datenbank zugreifen können, sollten wir uns eine solche erstellen. Dazu gibt es verschiedene Tools. Wir haben den DB Browser for SQLite verwendet, den Sie unter folgendem Link finden:

http://sqlitebrowser.org/

Hier laden Sie einfach den Download unter dem Link Windows .exe in der 32bit- oder 64bit-Version herunter und installieren die Anwendung.

Nach der Installation können Sie das Tool direkt starten. Hier bietet sich auch direkt die Schaltfläche Neue Datenbank zum Erstellen einer neuen Datenbank an. Wir wollen aber nicht tiefer in den Umgang mit diesem Tool einsteigen, sondern dieses nur kurz vorstellen – also Notlösung, wenn Sie einmal in den Entwurf einer Datenbank eingreifen müssen. Wir wollen aber dennoch kurz einmal einen Blick in eine echte SQLite-Datenbank werfen. Eine solche findet sich auch recht schnell, und zwar unter dem folgenden Link:

http://www.sqlitetutorial.net/sqlite-sample-database/

Nach dem Download finden Sie eine Datei namens chinook.db im Zielverzeichnis. Öffnen Sie diese nun mit dem Tool DB Browser for SQLite, füllt sich dieses recht schnell mit bekannt aussehenden Elementen wie Tabellen, Feldern und Felddatentypen (siehe Bild 1).

Fenster des SQLite-Tools DB Browser for SQLite

Bild 1: Fenster des SQLite-Tools DB Browser for SQLite

Vom SQL Server zu SQLite

Sie können diese Tabelle als Ausgangspunkt für eigene Experimente nutzen, aber wir wollen gern mit der bereits in weiteren Beispielen verwendeten Datenbank Bestellverwaltung weiter arbeiten. Wie aber machen wir aus einer SQL Server-Datenbank eine SQLite-Datenbank? Auch hierfür gibt es ein Tool, dass Sie unter diesem Link finden:

https://www.codeproject.com/articles/26932/convert-sql-server-db-to-sqlite-db

Hier müssen Sie sich allerdings anmelden, um dann die gewünschte Version, hier wohl die Binary, herunterzuladen. Sie erhalten hier eine .zip-Datei mit einem Verzeichnis namens SqlConverter_v1_20, dass Sie einfach auf Ihre Festplatte kopieren. Starten Sie die Anwendung, die als Converter.exe in diesem Verzeichnis steckt, erscheint das Fenster aus Bild 2.

Tool zum Konvertieren von SQL Server-Datenbanken nach SQLite

Bild 2: Tool zum Konvertieren von SQL Server-Datenbanken nach SQLite

Geben Sie hier den Servernamen des SQL Servers ein und wählen Sie dann die Quelldatenbank aus. Legen Sie außerdem den Namen der zu erstellenden .db-Datei fest, zum Beispiel Bestellverwaltung_SQLite.db. Ein Mausklick auf die Schaltfläche Start the conversion startet den Vorgang, bei dem Sie zunächst mit dem Dialog aus Bild 3 die zu konvertierenden Tabellen festlegen.

Auswahl der zu konvertierenden Tabellen

Bild 3: Auswahl der zu konvertierenden Tabellen

Danach dürfte eine Datei namens Bestellverwaltung_SQLite.db im gewählten Zielverzeichnis gelandet sein. Öffnen Sie diese Datei nun mit dem DB Browser for SQLite, können Sie schnell prüfen, ob alle Tabellen und Felder wie gewünscht in der Zieldatenbank gelandet sind (siehe Bild 4).

Anzeige der konvertierten Datei im DB Browser for SQLite

Bild 4: Anzeige der konvertierten Datei im DB Browser for SQLite

Vom Artikel zum Produkt

Wir wollen in diesem Rahmen auch gleich eine kleine Änderung an der Beispieldatenbank vornehmen: Im Gegensatz zu den englischen Tabellenbezeichnungen, die sich im Plural gegenüber dem Singular durch ein zusätzliches, angehängtes s unterscheiden (customer customers), ist es im deutschen Sprachgebrauch nicht so einfach. Dummerweise schleichen sich hier mitunter Bezeichnungen wie Artikel ein, die im Singular wie im Plural gleich lauten. Um hier keine Probleme zu bekommen, wollen wir die Bezeichnung der SQL Server-Tabelle Artikel zuvor in Produkte ändern. Außerdem fallen entsprechende Änderungen in der Tabelle Bestelldetails an, das ja die Tabelle Artikel/Produkte per Fremdschlüsselfeld referenziert.

SQLite in .NET-Projekten

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Ich habe die Datenschutzbestimmungen zur Kenntnis genommen.