C#: SQLite Datenbank einbinden und nutzen (auch für SharpDevelop)

SQLite ist eine dateibasierte Datenbank, welche Sie mit SQL Befehlen (wie mySQL, MS SQL, usw.) verwalten können. Installation

  • Laden Sie sich die benötigte Komponente herunter: ADO.NET 2.0 Provider for SQLite
  • Starten Sie das heruntergeladene Setup und folgen Sie den Installationsanweisungen
Vorbereitungen für Ihr C# Projekt Sie können die nun installierten ADO.NET SQLite Komponenten nutzen. zur Vereinfachung sollten Sie die benötigten Libraries (DLLs) in Ihren Projektordner kopieren:
  • Öffnen Sie den Ordner "C:\Programme\SQLite.NET\bin"
  • Markieren Sie die benötigte .DLL Datei zum Kopieren. Welche Datei Sie in Ihrem Fall brauchen, hängt von Ihrem eingesetzten System ab (I386, AMD64, ...). Für eine Standardumgebung (Windows 32-Bit System) nutze ich die "System.Data.SQLite.dll".
  • Öffnen Sie den Ordner "bin\Debug" Ordner in Ihrem Projektverzeichnis. In diesem Beispiel nutze ich den Projektnamen "HalloWelt". Im Beispiel ist der Projektordner "C:\tmp\HalloWelt\bin\Debug"
  • Fügen Sie die ausgewählten Dateien ein
In SharpDevelop die DLL als Referenz hinzufügen
  • Zur Projektansicht wechseln (Strg + Alt + L)
  • In Ihrem Projekt den Untereintrag "Referenzen" mit der rechten Maustaste anklicken
  • "Referenz hinzufügen" auswählen und anklicken
  • Den Reiter ".NET Assemblybrowser" auswählen
  • Auf den Button "Suchen" klicken
  • Ihren Projektordner öffnen und die gerade hineinkopierte DLL auswählen
  • "OK" anklicken Das Fenster schließt sich und die DLL ist im Bereich "Gewählte Referenzen" zu finden
  • "OK" anklicken Die DLL ist in Ihrer Projektliste aufgeführt
SQLite Unterstützung im Projekt einbinden
  • Fügen Sie die folgende Zeile am Anfang Ihrer .CS Datei ein:
using System.Data.SQLite;
Datenbank in C# zur Laufzeit (Runtime) erstellen
  • Eine neue "SQLiteConnection" erstellen
  • Parameter angeben: "Data Source" ist die einzige Pflichtangabe. Alle weiteren Parameter sind optional. Welche weiteren Parameter ihnen zur Verfügung stehen, finden Sie in der auf Ihrem System installierten .CHM Hilfedatei unter "C:\Programme\SQLite.NET\Doc".
Beispiel:
SQLiteConnection connection = new SQLiteConnection("Data Source=test.dat");
connection.Open();
connection.Close();
Nachdem Sie den Source des Beispiels ausgeführt haben, finden Sie eine (noch leere) Datenbank "test.dat" im Verzeichnis der ausgeführten .EXE Datei. In unserem Beispiel liegt diese SQLite Datenbank also unter "C:\tmp\HalloWelt\bin\Debug". Datenbank-Tabellen in C# zur Laufzeit erstellen
  • Eine neue "SQLiteConnection" erstellen (s.o.)
  • Den "Create Table" Befehl als SQLiteCommand einbinden
  • Diesen SQL Befehl an die Datenbank übergeben
  • Verbindung zur SQLite Datenbank wieder schließen
Beispiel:
SQLiteConnection connection = new SQLiteConnection("Data Source=test.dat");
connection.Open();

SQLiteCommand command = new SQLiteCommand(connection);
command.CommandText = String.Format("create table {0} (" +
    "  ID integer not null primary key autoincrement," +
    "  Name varchar(100) not null," +
    "  City varchar(100))",
    "Adressen");
command.ExecuteNonQuery();

connection.Close();
Im Beispiel wird eine einzelne Tabelle mit dem Namen "Adressen" und den Feldern "ID, Name, City" erstellt. Das Feld "ID" ist dabei der PK (Primary Key) und wird automatisch bei jedem Datensatz hochgezählt (Increment +1). Daten in eine Tabelle in C# zur Laufzeit einfügen Dieses Beispiel steht stellvertretend für jeden weiteren verfügbaren SQL Befehl. Eine Übersicht der anwendbaren SQL Befehle finden Sie in der SQLite Hilfe oder auf der SQLite Webseite: http://www.sqlite.org/ Wie Sie Daten aus Tabellen abrufen können (SELECT Statements) finden Sie im nächsten Beispiel.
  • Eine neue "SQLiteConnection" erstellen (s.o.)
  • Den Befehl als SQLiteCommand einbinden
  • Diesen SQL Befehl an die Datenbank übergeben
  • Verbindung zur SQLite Datenbank wieder schließen
Beispiel:
SQLiteConnection connection = new SQLiteConnection("Data Source=test.dat");
connection.Open();

SQLiteCommand command = new SQLiteCommand(connection);
command.CommandText = String.Format("insert into Adressen (Name,City) values ('{0}','{1}')",
    "Max Muster",
    "Hamburg");
command.ExecuteNonQuery();

command.CommandText = String.Format("insert into Adressen (Name,City) values ('{0}','{1}')",
    "Bertha Besser",
    "Berlin");
command.ExecuteNonQuery();

connection.Close();
Im Beispiel werden zwei Datensätze in die oben erstellte Tabelle "Adressen" eingefügt:
  1. Max Muster, Hamburg
  2. Bertha Besser, Berlin
Daten aus einer Tabelle in C# zur Laufzeit abfragen Dieses Beispiel steht stellvertretend für alle weiteren SQL Befehle, mit denen Sie Daten aus Ihrer Datenbank auslesen.
  • Eine neue "SQLiteConnection" erstellen (s.o.)
  • Den Befehl als SQLiteCommand einbinden
  • Diesen SQL Befehl an die Datenbank übergeben
  • Die erhaltenen Daten ggf. weiterverarbeiten
  • Verbindung zur SQLite Datenbank wieder schließen
Beispiel:
SQLiteConnection connection = new SQLiteConnection("Data Source=test.dat");
connection.Open();

SQLiteCommand cmd = new SQLiteCommand("select * from Adressen", connection);
SQLiteDataReader reader = cmd.ExecuteReader();

if (reader.HasRows)
while (reader.Read())
{
  string name = reader.GetString(reader.GetOrdinal("Name"));
  string city = reader.GetString(reader.GetOrdinal("City"));
  MessageBox.Show(string.Format("{0}, {1}", name, city));
}

connection.Close();
Im Beispiel werden alle Datensätze aus der oben erstellten Tabelle "Adressen" eingelesen. Jeder Datensatz wird dem Benutzer dann als MessageBox angezeigt. SQLite Datenbank löschen Ihre Datenbank können Sie (auch aus C# heraus) sehr einfach löschen, indem Sie die Datei "test.dat" (in unserem Beispiel) von der Festplatte löschen. Voraussetzung ist, dass Sie keine offenen Verbindungen zur Datenbank haben. Ansonsten erhalten Sie einen Zugriffsfehler ("Access denied"). Achtung: Wenn Sie die Datendatei Ihrer SQLite Datenbank löschen, verlieren Sie sofort alle gespeicherten Daten !