Kategorien

Suchen


Aktuelle Artikel

Archiv


« | Startseite | »

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

Jockel | 19.02.2010

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

Installation

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:

In SharpDevelop die DLL als Referenz hinzufügen

SQLite Unterstützung im Projekt einbinden

1
using System.Data.SQLite;

Datenbank in C# zur Laufzeit (Runtime) erstellen

Beispiel:

1
2
3
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

Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
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.

Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.

Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 !

Kategorie: Allgemeines, Anleitungen, C# .Net | 4 Kommentare »

4 Antworten auf “C#: SQLite Datenbank einbinden und nutzen (auch für SharpDevelop)”

  1. Nico meint:
    15.09.2010 um 10:26

    Hey,
    Super Tutorial für den Einstieg! Kann man jedem empfehlen, der SQLite in C# benutzen will.

  2. code19 meint:
    15.01.2011 um 07:34

    Hi
    Danke für dein Tutorial!

    Ich versuche seit langer Zeit eine geeigneter Datenbank für meine Projekte zu finden, die online (Mysql) oder im eigenen System laufen (als *.mdb).
    Die MDB lassen sich schnell (10 Sekunden) mit Informationen ausfüllen, die ich aus einer txt-Dateie auslese.
    Wenn ich dasselbe mit Sqlite db mache, dann dauert es ziemlich lang (mindestens 5 min.)

    Weiss jemand, was ich falsch mache, und ob es an mir liegt oder ……..

    cya

  3. Andreas meint:
    31.03.2011 um 17:39

    Danke für den tollen Einstieg. Der Beitrag hat mir gerade bei der Entscheidung geholfen ob ich bei einer kleinen Applikation SQL Server CE oder SQLite nehmen soll.

    Und eine Anmerkung obendrauf. Wenn man mit Mono arbeitet und die Datenbank auf Windows und Linux/Mac haben möchte, kann man den Namespace von Mono.Data.Sqlite nehmen, dieser ist die Mono Implementierung der System.Data.SQLite, daher bleibt der Code der selbe. Auf Windows benötigt man dann noch die sqlite3.ddl welche man ins bin Verzeichnis kopieren muss, auf Linux/Mac wird die sqlite3.ddl nicht benötigt.

    Gruss Andreas

  4. Andreas meint:
    24.01.2012 um 01:16

    Danke für die Anleitung und das Demo-Projekt!! Hat auch mir bei der Entscheidung geholfen, eine passende DB zu finden.
    Ich habe allerdings noch eine Frage zu 32/64 bit: Ist es möglich, beide DLLs (für 32 und 64 bit) hinzuzufügen, und das Programm zur Laufzeit entscheiden zu lassen, welche Lib gewählt wird?

    Gruß
    Andreas (2)

Kommentare