www.rolandk.de
- Aktuelle Themen zu .Net -
Achtung: Hier handelt es sich um meine alte Seite.
Die aktuelle ist unter folgendem Link erreichbar: www.rolandk.de/wp/
Home Artikel Daten SQLite und EF - Einfach und schnell




















































SQLite und EF - Einfach und schnell
Samstag, den 19. Juni 2010 um 07:48 Uhr

 

Allgemeines

Wer kennt sie nicht, die klassische Datenbankanwendung, wie sie in der Berufsschule, im Studium oder in der Ausbildung gelehrt wird: Ein einfaches Programm, eine lahme dateibasierte MS Access Datenbank im Hintergrund und ein paar Oberflächen, mit denen die Daten bearbeitet werden können. In diesem Artikel will ich zeigen, wie genau dieses Vorgehen zusammen mit aktuellster Technologie nicht nur sinnvoll sein kann, sondern den Umgang mit Daten sehr erleichtert - nicht nur für die klassische Datenbankanwendung.

 

Verwendete Technologien

Basis dieses Artikels bilden SQLite und das seit .Net Framework 3.5 nutzbare ADO.Net Entity Framework. SQLite ist ein OpenSource Projekt, man könnte es an der Stelle vergleichen mit Access von Microsoft. Es handelt sich also um eine dateibasierte Datenbank. Der in meinen Augen größte Vorteil von SQLite ist, dass der spätere Benutzer nichts extra installieren muss. Es reicht, die überraschend kleine Dll mit dem eigenen Programm auszuliefern. Natürlich ist es noch schnell, einfach und so weiter. Weitere Informationen darüber findet man auf der Homepage von SQLite. Das ADO.Net EntityFramework ist ein sog. Objekt-Rationaler-Wrapper oder einfach gesagt, für alle Objekte in der Datenbank werden automatisch Klassen im Code erzeugt. Auch das Schreiben in und das Lesen von den Datenbanken wird vollständig von dem Framework übernommen. Für den Programmierer übrig bleiben einfache .Net Klassen mit leicht verständlichen Methoden.

 

Vorgehen

Grundlage für das EntityFramework ist die Programmierung mit .Net 3.5 SP1 oder höher. Für SQLite gibt es hier eine sehr gute .Net Bibliothek, welche nicht nur alle Funktionen von SQLite in .Net Dlls kapselt, sondern auch Datenbankdesigner für VisualStudio mitbringt. Das Video gleich auf der Hauptseite gibt einen sehr guten Eindruck, was man damit machen kann. Auf der eben genannten Seite muss jetzt das aktuellste Setup heruntergeladen und installiert werden - damit werden auch die Designer für VisualStudio 2008 installiert. Nach der Installation kann bereits ein neues Projekt, beispielsweise eine Windows.Forms Anwendung, erstellt werden. Sobald das Projekt erstellt ist, kann mit Hilfe des ServerExplorers eine SQLite Datenbank angelegt werden. Die Schritte dazu sind wie folgt:

 

Neue Datenbank erstellen

 

Als nächstes können beliebig Tabellen definiert und deren Daten angelegt werden. In diesem Beispiel lege ich eine einfache Highscore-Tabelle an:

 

Tabelle anlegen

 

Wichtig ist noch, die Spalte RecordID als Primärschlüssel zu definieren. Hierfür befindet sich ein entsprechender Eintrag im Kontextmenü der Spalte. Nach einem Klick auf Speichern stehen die Daten in der Datenbank. Somit ist schon die ganze Arbeit auf Datenbankseite abgeschlossen, was jetzt noch nötig ist, ist der Zugriff von unserer .Net Anwendung auf die Daten. Hierzu legen wir ein sog. ADO.Net Entity Data Model an, welches als Wrapper für die eben erstellte Datenbank dient. Folgende Schritte sind dazu nötig:

 

DataModel anlegen

 

Damit ist es geschafft: Datenbank und Zugriffsschicht sind fertig, ohne auch nur eine einzige Zeile Code geschrieben zu haben.

 

Arbeiten mit den erzeugten Klassen

Zunächst sind für uns zwei der erzeugten Klassen wichtig: MyDatabaseEntities (wird mit dem Namen der SQLite Datenbank angelegt, kann bei anderen also auch anders heißen) und Highscore. Erstere bildet quasi die gesamte Datenbank ab und letztere die von uns erzeugte Tabelle Highscore. Ohne jetzt großartig um den heißen Brei zu reden, eine einfache Abfrage aller Einträge in der Tabelle Highscore würde so aussehen:

  1. MyDatabaseEntities d = new MyDatabaseEntities();
  2. foreach (Highscore actHighscoreEntry in d.Highscore)
  3. {
  4. //Do something
  5. }

Sehr schön zum Programmieren wird es auch, wenn Daten auf bestimmte Kriterien eingeschränkt werden sollen. Wie im folgendem Beispiel kann dazu Linq verwendet werden (gut, die Abfrage in dem Beispiel macht nicht wirklich viel Sinn):

  1. MyDatabaseEntities d = new MyDatabaseEntities();
  2. var selectResult =
  3. from actHighscoreEntry in d.Highscore
  4. where actHighscoreEntry.Name == "Georg"
  5. select actHighscoreEntry;
  6. foreach (var actSelectResult in selectResult)
  7. {
  8. //Do something
  9. }

Das hier sind nur zwei Beispiele dessen, was mit dem Entity Framework möglich ist. Mehr Infos zum Framework finden sich natürlich auf Msdn zum Beispiel in diesem Artikel.

 

Zusammenfassung

SQLite ist zusammen mit dem Entity Framework sehr leicht zu verwenden und kann somit dazu benutzt werden, Unmengen an Daten in einzelnen Dateien zu organisieren. Die komplette Arbeit an der Datenzugriffsschicht wird auf diese Weise vom Framework übernommen. Natürlich ist genau das auch mit anderen Datenbanken möglich, doch bietet SQLite den Vorteil, dass es keine spezifischen Voraussetzungen an den PC hat.

img src=

 

Kommentar hinzufügen

Ihr Name:
Kommentar: