VB.net – sqlite Datenbankanbindung – Teil 1

Es muss nicht immer MySql sein, es gibt auch kleinere Datenbanken, welche sich einfacher nutzen lassen. Der Nachteil von MySql ist, dass diese Datenbank immer einen Datenbankserver voraussetzt. Dies bedeutet, dass der MySql Server lokal oder auf einen fernen System laufen muss. Es gibt zwar portable Versionen von MySql aber auch diese sind für viele kleine Programme überdimensioniert. Man fährt ja auch nicht mit einen 40zig Tonner Brötchen holen.
Praktischer ist hier sqlite, diese Datenbank besteht lediglich aus einer Datei. In ihr können Tabellen angelegt, Daten gespeichert, Views erstellt, Trigger gesetzt, …. werden. Der Funktionsumfang ist kleiner als der von MySql oder Microsoft SQL Server, ist aber völlig ausreichend um Daten komfortabel zu speichern und zu lesen. Eine eigene Benutzerverwaltung ist in sqlite nicht vorhanden, es gelten die Zugriffsrechte auf die Datenbankdatei.
Mehr Informationen über sqlite gibt es auf Wikipedia/sqlite.
sqlite .net Addon herunterladen
Um sqlite im eigenen Vb.net Programm zu nutzen, ist eine API notwendig, mit welcher man auf die Datenbank Datei zugreifen kann. Hierfür gibt es den ADO.net Provider für sqlite. Den Provider herunterladen und installieren. Benutzt man Visual Studio von Microsoft, besteht die Möglichkeit die APi direkt in der Installation mit Visual Studio zu verknüpfen.
sqlite dll hinzufügen
Benutzt man SharpDevelop muss man die dll manuell einbinden. Neues Projekt erstellen > Projekt > Referenz hinzufügen > Reiter .net Assemblybrowser > suchen. Anschließend wählt man die System.Data.SQLite.dll welche unter den Standartinstallationspfad zu finden ist. (C:\Program Files\SQLite.NET\bin)
sqlite DB Verwaltungstool
Für eine einfache Verwaltung der Sqlite Datenbank empfiehlt sich ein Firefox Addon. Mit dem SqliteManager lassen sich Datenbanken anlegen, bearbeiten und abfragen. Somit kann man später seine select Abfragen oder Insert Anweisungen überprüfen.
Das Addon setzt Firefox Version 3.5 und höher voraus.
sqlite Datei erstellen
Als erstes muss man eine Datenbank anlegen, dies kann man über den SqliteManager erledigen oder einfach per Quellcode. Letzteres ist praktisch wenn man zum Beispiel für jeden Tag eine neue Datenbank anlegen möchte.
Generell muss man in seinen VB.net Programm die Sqlite Erweiterungen importieren. Dies geschieht wie immer per “Imports” Anweisung. Achtung die Sqlite Erweiterungen werden über “System.Data.SQLite” angesprochen.

Imports System.Data.SQLite
Imports System.IO

Praktischerweise verpackt man die Datenbankerstellung in eine Sub.

Try
'Pfad+DBName als Übergabe
Public Sub sub_create_sqlitedb(sub_dbname As String)
'neue Datenbankverbindung erstellen
Dim SQLconnect As New Data.SQLite.SQLiteConnection()
'ausgewählte Dateiname der DataSource übergeben
SQLconnect.ConnectionString = "Data Source=" & sub_dbname & ";"
'Da die Datei noch nicht existiert, wird sie mit einer open Anweisung erstellt
SQLconnect.Open()
'und wieder geschlossen
SQLconnect.Close()
'Fehler abfangen
Catch
	MessageBox.Show("Fehler beim erstellen der Sqlite Datenbank!")
End Try
End Sub

Nun kann man zum Beispiel über ein Button und einen FileSaveDialog mit geringen Aufwand eine Datenbank erstellen. Pfad und Name können dabei frei gewählt werden.

Sub Cmd_create_sqlitedbClick(sender As Object, e As EventArgs)
'Speichern als Dialoag erstellen und anzeigen
Dim dlg_file_save As New SaveFileDialog
dlg_file_save.Filter = "SQLite3 (*.db3)|*.db3|All Files|"
dlg_file_save.ShowDialog()
'Datenbank erstellen
Call sub_create_sqlitedb(dlg_file_save.FileName)
'Überprüfen ob die Datei Existiert,
If File.Exists(dlg_file_save.FileName) = False Then
      	MessageBox.Show("Datenbank Datei wurde nicht erstellt!")
End If
End Sub

Nun ist die Datenbank erstellt und kann genutzt werden. Im zweiten Teil beschreibe ich wie man eine Tabelle erstellt und Daten einfügt.

8 thoughts on “VB.net – sqlite Datenbankanbindung – Teil 1

  1. Hat mir auch geholfen!
    Ich musste aber den Connection String wie folgt abändern:
    SQLconnect.ConnectionString = “Data Source=” + Chr(34) + “& sub_dbname & ” + Chr(34) + “;”
    Danke!

  2. Wenn ich das kompilierte Programm auf einem anderen Rechner laufen lassen möchte (Windows 7), muss da dann noch was installiert werden? Oder reicht es, die sqlite3.dll im Release Verzeichnis drinnen zu haben?

  3. Sag mal, hast du den SQLite Wrapper auch mit VB.NET 2010 und die 4.0 .NET Umgebung zum Laufen bekommen? Bei mir tut’s damit leider nicht.
    Und eine alte 3.5er Version bekomme ich irgendwie nicht eingebunden.
    “Die Assembly im gemischten Modus wurde während Version v2.0.50727 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden.”

  4. Ich habe noch nie ein VB.net 2010 benutzt, ich nehme zum coden nur Sharpdevelop 3.1 mit dem 3.5 Framework. Die 4.0 habe ich noch nicht angeschaut.
    Hast du den neusten SQLite Wrapper genommen? Als Alternative kannst du Sharpdevelop probieren, so als 2. Entwicklungsumgebung.

  5. Ich habe das mal im Visual Studio 2010 getestet. Funktioniert soweit alles sehr gut. Wie schnell unnd wie viele Resourcen werden verbraucht wenn ich die SQLite Datei auf eine Netzwerkfreigabe lege und dort zugreifen. So hätte ich eine gewisse Netzwerkfähigkeit. Oder ist der mehrfaceh Zugriff gar nicht möglich?
    Auf jeden Fall schon mal eine Tolle übersichtliche Anleitung.

  6. Danke für den tollen Artikel, hat mir gherade wirklich weitergeholfen. SQLLite finde ich eine super Alternative zum MySQL server, da man für kleinere Anwendungen ja nicht immer einen Server benötigt und das bei einer späteren Installation ja doch immer mal Probleme machen kann

Comments are closed.