· 

SQLite Datenbank in VB.net erstellen und nutzen

Oft benötigt man für selbst einfache Programme eine Datenbank. Natürlich man für ganz einfache Zwecke auch XML nutzen. Da spricht natürlich nichts dagegen. Allerdings wenn die Datenbestände anwachsen, macht es spätestens dann Sinn darüber nachzudenken eine richtige Datenbank zu nutzen um z.B. Eigenschaften zu indexieren.

 

Ich möchte euch daher gerne einmal zeigen wie ihr mit Visual Studio 2013 SQLite nutzen könnt. In den Vorgänger-Versionen sollte das aber ebenso funktionieren. Es ist wirklich sehr einfach und straightforward.

SQLite installieren (vom 30.12.2016)

Fast genau 2 Jahre später und einige Probleme später, hier ein kleines Update. Microsoft werkelt ja ständig herum und hier und dort ändert sich daher die Installationsroutine von SQLite ein klein wenig. Aber gar kein Problem. Jetzt einfach hier eine neue Anleitung mit den aktuellen Bildern. Klappt nach wie vor ohne Probleme und ist immer noch sehr einfach.

Software:

- Windows 10 (14393.576)

- Visual Studio Community 2015 (14.0.25431.01 Update 3)

Wir klicken zunächst einmal auf EXTRAS, dann auf NuGet-Paket-Manager und am Ende auf Nuget-Pakete für Projektmappe verwalten. Jetzt SQLite eingeben und etwas Geduld mitbringen. Wenn die Liste erscheint einfach System.Data.SQLite auswählen und in euren Projekt (Versionen) einen Haken setzen.

Jetzt sollte der Installieren Button klickbar werden. Diesen klicken und etwa eine Minute warten.

Jetzt öffnet sich ein Fenster Vorschau. Grandioser Name! Grml. Danach einfach auf OK und wieder etwa eine Minute warten. Dann sollte SQLite installiert sein.

Jetzt ein letzter Blick auf die rechte Seite. Hier sollten jetzt zahlreiche SQLite Komponenten installiert sein. Alternativ unten in die Konsole schauen.

Zum Testen ob alles wirklich passt, holt ihr euch nun den Quellcode von hier (nach unten zum Beispiel-Projekt scrollen).

 

Wenn ihr jetzt das Projekt startet sollte alles ohne Problem funktionieren.

SQLite installieren (vom 25.12.2014)

Es gibt auch hier viele Wege Visual Studio für SQLite fit zu machen. Allerdings ist dies hier die wirklich einfachste und schnellste Methode. Wir klicken zunächst einmal auf EXTRAS, dann auf NuGet-Paket-Manager und am Ende auf Nuget-Pakete für Projektmappe verwalten.

Jetzt suchen wir nach SQlite. Achtet darauf, dass die beiden ersten Buchstaben groß geschrieben sind sonst findest ihr leider nichts. Sehr sinnvoll Microsoft! Jetzt System.Data.SQLite (x86/x64) auswählen und installieren.

Jetzt noch durch diverse Zustimmungen durchklicken...

Danach am besten überprüfen ob alles korrekt installiert wurde. Dazu einfach in den Projekt-Verweisen einmal nach Begriffen wir SQLite schauen.

Beispiel-Projekt

Ich habe nun ein Beispielprojekt aufgesetzt, welches folgende Fälle abdeckt:

  • Erstellung der Datenbank-Datei
  • Erstellung einer Tabelle in der Datenbank
  • Anlegen eines Nutzers in der Tabelle
  • Abfragen von Daten aus der Tabelle

Gerne könnt ihr den Quellcode verwenden, welcher hierunter eingebunden ist. Oder ihr ladet euch das komplette Beispiel-Projekt von ganz unten herunter.

Quelltext anzeigen

Wenn ihr das Projekt nun ausführt bekommt ihr folgerichtig einen Eintrag zu sehen. Sehr schön es hat also wunderbar geklappt und dies in wenigen Minuten.

Download

Download
SQL TEST.zip
Komprimiertes Archiv im ZIP Format 21.8 MB

Fazit

SQLite ist sehr Einsteiger-freundlich, weil es an MySQL angelehnt ist. Daher fällt der Umgang damit nicht sonderlich schwer. Auch die Einrichtung ist mit Visual Studio ein Kinderspiel. Jeder, der in VB.Net unterwegs ist, sollte zumindesten einmal Kontakt mit SQLite gehabt haben.

Kommentar schreiben

Kommentare: 17
  • #1

    Kevin Kramer (Dienstag, 14 Oktober 2014 08:40)

    Danke. Sehr hilfreich für mich. Wollte nämlich grad ein Tool entwickeln mit einer Offline-Datenbank und da bietet sich SQLite wirklich perfekt an. Für die Express ist das schon etwas schwieriger was ich so gelesen habe. Aber für die sagen wir normale VS Version ist das ja fast ein Kinderspiel wenn man weiß wie es geht. Super und nochmal danke dir.

  • #2

    kwoxer (Dienstag, 14 Oktober 2014 16:55)

    Hi Kevin, ja in der Tat SQLite eignet sich hervoragend für Offline-Anwendungen. Ja soweit mir bekannt ist, gibt es SQLite offiziell nicht mehr für die Express Version und die Installation dort ist um ein Vielfaches schwieriger. Vllt finde ich ja einmal die Zeit und kann das auch bei der Express Version einmal zeigen. Derzeit schreibe ich jedoch meine Masterarbeit und hab alle Hände voll zu tun und schaffe nur das Nötigste. Ich hoffe du hast dafür Verständnis.

    Alternativ kannst du aber auch XML Nutzen. Da fehlen zwar Features wie Indexing aber dennoch für kleine Datenbestände brauchbar: http://msdn.microsoft.com/de-de/library/bb979298.aspx

    LG

  • #3

    Martin (Dienstag, 03 November 2015 17:48)

    in VisualStudio2015 scheint das nicht mehr zu funktionieren.

  • #4

    Oliver (Freitag, 11 Dezember 2015 10:34)

    Vielen Dank für die Hilfe,
    mit Visual Studio Community 2015 hat es wunderbar funktioniert. Der oben genannte SQLite-Eintrag heißt jetzt nur noch "System.Data.SQLite". Der Zusatz x86 und x64 steht im Erklärungstext.

  • #5

    kwoxer (Dienstag, 26 Januar 2016 21:45)

    Danke für dein Feedback. Ja Microsoft benennt derzeit sehr viel um zur Verwirrung des gemeinen Volkes... Zur Not wenn man nichts findet mit Google suchen! ;)

  • #6

    Gary (Sonntag, 17 Juli 2016 17:51)

    Sehr schön und klappt immer noch. SQLite in weniger als einer Minute wenn man schnell ist ;)

  • #7

    Nico Höhn (Dienstag, 26 Juli 2016 02:33)

    Hallo,

    ist wirklich super, baue gerade ein Tool das automatisch meine Lesezeichen von edge mit Mozilla FF synchronisiert damit der es dann wieder mit Mozilla FF auf meinem Android Gerät synchronisiert. Hab keine Lust das jedes mal von Hand zu machen. Da Mozilla die Lesezeichen in einer Sqlite Datei ablegt, ist es genau das was ich suche.

  • #8

    Martin Conzelmann (Montag, 05 Dezember 2016 15:19)

    Vielen Dank! Funktioniert perfekt und war genau das, was ich gesucht hab!

  • #9

    Rudolf (Montag, 26 Dezember 2016 13:18)

    hab Visual Studio 2015 Community und bin auf dieses hübsche Lerntool aufmerksam geworden, doch leider funktioniert es bei nicht. Bekomme einen Ausnahmefehler des Typs "System.Data.SQLite.SQLiteException" ist in System.Data.SQLite.dll aufgetreten. In der Zeile 22 .ExecuteNonQuery()
    Und zwei Fehler die sich auf Zeile 1 beziehen.
    Da es bei Oliver scheinbar geklappt hat wäre es toll, wenn ich Hilfe bekäme.

  • #10

    kwoxer (Freitag, 30 Dezember 2016 15:55)

    Danke dir Rudolf. Ich habe mal den Blog-Eintrag aktualisiert. Evtl helfen die die neuen Bilder ja etwas. Ansonsten gerne mal mit einer etwas detaillierteren Antwort gerne auch mit Bildern hier. Würde dir gerne weiterhelfen. Habe jetzt auch die aktuellste VSC installiert. Also sind somit quasi auf dem gleichen Stand.

    Also melde dich falls du nicht vorrankommst. Danke und schonmal einen guten Rutsch dir! Lieben Gruß.

  • #11

    Georg (Dienstag, 07 März 2017 14:34)

    Hallo! Danke für den Beitrag, der sehr einfach zeigt, wie man SQLite benutzen kann. Zu dem Fehler von Rudolf:
    Ich habe das Beispiel bei mir versucht und bekomme den gleichen Fehler. Ich konnte aber die Ursache finden: Die Tabelle die du in deinem Beispiel erstellen versuchst (user), heißt gleich wie die Datenbank (oder das Datenbankfile). Das darf aber nicht sein. Versucht man einen anderen Tabellennamen oder einen anderen Namen für das Datenbankfile, funktioniert es. Vielleicht kannst du das noch in deinem Beispiel hier ändern?
    Lg
    Georg

  • #12

    kwoxer (Samstag, 18 März 2017 11:30)

    Mhh komisch, kann das Problem nicht nachvollziehen. Aber klingt sinnvoll was du da sagst ;) Ich denke wer das gleiche Problem hat schaut einfach in den Kommentaren hier nach :) Danke dir.

  • #13

    Heinz Gimmler (Donnerstag, 11 Mai 2017 08:38)

    Hallo kwoxer,

    vielen Dank für diesen Blog und die Beispiele.

    Visual Studio 2017 installieren, sich an Deine Anleitung halten, funzt. Auch mit gleichen Namen für die Tabelle und die Datenbank.

    Besten Gruß
    Heinz

  • #14

    guenther (Dienstag, 19 September 2017 10:36)

    Hi,

    wenn ich das Testprogramm das erste Mal laufen lasse, ist alles bestens.
    DB erzeugen, table erzeugen, testdatensätze einfügen.OK
    Beim zweiten Mal entsteht immer ein DB Locked error, sobald ich in die bestehende Tabelle einen neune Eintrag erzeugen will.
    Diese Codesniplet verwende ich:

    Using SQLconnect As New SQLite.SQLiteConnection()
    Dim SQLcommand As SQLiteCommand
    SQLconnect.ConnectionString = sDBName
    SQLconnect.Open()
    SQLcommand = SQLconnect.CreateCommand
    SQLcommand.CommandTimeout = 2

    Dim iIndex As Integer = 2
    'Dim sValue As String = "('" & iIndex & "','" & sIp & "','" & sMType & "','" & sMessage & "' , 1 )"
    Dim sValue As String = "('" & sIp & "','" & sMType & "','" & sMessage & "','" & bDone & "')"


    SQLcommand.CommandText = "INSERT INTO news ( M_IP, M_TYPE, M_MESSAGE, M_DONE) VALUES " & sValue

    Try

    Console.WriteLine("Erzeugung von n Zeilen: " & SQLcommand.ExecuteNonQuery(CommandBehavior.CloseConnection))



    SQLcommand.Dispose()
    SQLconnect.Close()

    Catch sql_ex As SQLiteException
    Console.WriteLine(sql_ex.ToString)
    Console.WriteLine(sql_ex.Message)

    End Try

    End Using

  • #15

    kwoxer (Samstag, 07 Oktober 2017 09:48)

    Hallo Heinz, klingt so als wenn beim letzten mal deine Datenbank nicht richtig disclosed wurde. Am besten du startest nochmal eine frische Datenbank. Und da debuggst du mal die Zeilen beim SQLite Zugriff.

    Aber zugegeben es gibt wirklich Probleme mit offenen Datenbank. Vor allem wenn man auf eine Datenbank zugreift und gleich danach die Löschen möchte z.b.

    SQLite benötigt manchmal etwas länger um das Schließen einer Datenbank zu aktualisieren. Kann ich jetzt schlecht sagen woran es genau bei dir liegt ohne es direkt zu sehen.

    Hoffe es hat mittlerweile geklappt bei dir.

    Schöne Grüße

  • #16

    Peter Weibel (Sonntag, 06 Januar 2019 18:30)

    Tolle Anleitung, klappt einwandfrei mit VS 2017 und Win10!

    Einen kleinen Verbesserungsvorschlag hätte ich noch:
    Bitte benutz doch für den Connection-String eine einmalige (globale) Variable wie z.B.
    Dim MyConnectionString As String = "Data Source=user.s3db;"

    Dann muss man diesen String nicht an 4 Orten abändern, wenn man den DB-Namen oder sonstige Features hinzufügen will. Features wie sie z.B. hier beschrieben sind
    https://www.connectionstrings.com/sqlite/

  • #17

    Ralf (Mittwoch, 18 März 2020 21:38)

    Hallo an alle
    Ich hab da mal eine Frage
    Wie kann ich auf eine bestimmten Eintrag in der Datenbank zugreifen
    Zb. Zeile 1 Spalte "1"
    Besten Dank vorab
    Lg Ralf