Hi @ all,
hier werde ich kurz erklären, wie man mit einer SQLite Datenbank in C# arbeitet.
Was braucht ihr?
- Die SQLite Setup Exe von sourceforge
- C# :wink:
Vorab: Der Datenbankpfad ist in diesem Tutorial immer c:\\mydatabasefile.db3
Los geht´s:
Als erstes installiert ihr per Setup SQLite. Damit sollte auch der Verweis eingetragen sein.
Wenn dies erledigt ist,startet ihr eure C# IDE. Dort öffnet ihr ein neues Projekt.
Dort tragt ihr bei using folgendes ein, wenn es noch nicht vorhanden ist:
Neue Datenbank anlegen:
Um eine neue Datenbank-Datei anzulegen, benutzt ihr diesen Codeausschnitt:
Wichtig: Es muss immer erst eine Datenbank vorhanden sein.
Verbindung zur Datenbank herstellen:
Um eine Verbindung herzustellen, erstellt ihr zuerst eine Verbindung. Dann gebt ihr im ConnectionString den Datenbankpfad an und öffnet die Verbindung mit Open. Dies sieht so aus:
SQLiteConnection connection = new SQLiteConnection();
connection.ConnectionString = "Data Source=c:\\mydatabasefile.db3";
connection.Open();
Damit ist die Datenbankverbindung hergestellt.
Datenbank verwalten:
Mit sogenannten Commans kann man SQLite verwalten. Dabei sind MySQL-Kenntnisse aus PHP hilfreich(weiß nicht genau ob es auch bei anderen DB-Systemen so ist)
Um überhaupt einen Command ausführen zu können, müsst ihr zuerst diesem Command deklarieren:
Commandliste:[INDENT]->Tabelle erstellen:
Um eine Tabelle hinzuzufügen, gibt es Create als Command. Beispiel:
command.CommandText = "CREATE TABLE IF NOT EXISTS Test ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,testspalte VARCHAR(100) NOT NULL);";
[/INDENT][INDENT]->Eintrag hinzufügen:
Um einen Eintrag hinzuzufügen, gibt es den Command Insert. Beispiel:
[/INDENT][INDENT]->Eintrag löschen:
Um einen Datensatz zu löschen, müsste ihr Delete verwenden. Beispiel:
[/INDENT][INDENT]->Eintrag updaten:
Es gibt auch die Möglichkeit die Daten in der DB upzudaten. Beispiel:
[/INDENT][INDENT]->Einträge ausgeben:
Um Datensätze auszugeben, gibt es folgende Methode:
(Siehe auch weiter unten: Auslesen der Ausgabe/Mehrere Datensätze ausgeben)
[/INDENT]Um den angegebenen Command dann auch ausführen zu lassen, nutzt man ExcuteNonQuery:
Dannach kann man, wenn man nicht noch mehr Commands ausführen will, die Ressourcen des Command freigeben:
Auslesen der Ausgabe/Mehrere Datensätze ausgeben:
Um die ausgegebenen Sätze ausgeben zulassen, gibt es den sogenannten Reader. Dieser gibt den Inhalt aus dem Command wieder. Beispiel, welches mehrere Sätze ausliest:
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
//output wobei reader[0].ToString() dann einen String der Reihe ausgibt. Mit dem index bei reader lässt sich der Spaltenindex/-name bestimmen, der ausgegeben werden soll
}
Die Besonderheit beim reader ist, dass dieser Reader wieder geschlossen werden muss. Außerdem ist es nützlich, wenn man die Resourcen des Readers vorher freigibt. Dies sieht dann so aus:
Datenbank schließen:
Die Datenbank zu schließen ist recht einfach. Dafür müsst ihr nur Close aufrufen. Beispiel:
Konsolenbeispiel:
Hier nochmal ein komplettes Beispiel, wie man mit der Datenbank arbeitet.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
if (File.Exists(Environment.CurrentDirectory + "/Database.db3") == false)
{
//erstellen der Datenbank falls diese nicht existiert
SQLiteConnection.CreateFile("c:\\mydatabasefile.db3");
}
//Verbindung herstellen
SQLiteConnection connection = new SQLiteConnection();
connection.ConnectionString = "Data Source=c:\\mydatabasefile.db3";
connection.Open();
SQLiteCommand command = new SQLiteCommand(connection);
// Erstellen der Tabelle, sofern diese noch nicht existiert.
command.CommandText = "CREATE TABLE IF NOT EXISTS Test ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,Testspalte VARCHAR(100) NOT NULL);";
command.ExecuteNonQuery();
// Einfügen zweier Test-Datensätze.
command.CommandText = "INSERT INTO Test (Testspalte) VALUES( 'Test-Datensatz!')";
command.ExecuteNonQuery();
command.CommandText = "INSERT INTO Test (Testspalte) VALUES( 'Test-Datensatz2!')";
command.ExecuteNonQuery();
// Auslesen der Datensätze.
command.CommandText = "SELECT Testspalte FROM Test";
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
Console.Read();
}
}
}
Alles anzeigen
Das gesamte Projekt nochmla als Anhang zum Downloaden :wink:
Gute Links:
Command Line Shell For SQLite
SQLite for Net Homepage
Dies war es schon. Falls euch etwas fehlt oder etwas falsch sein sollte, könnt ihr euch melden.