Angepinnt C# und SQLite

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • C# und SQLite

      Hi @ all,
      hier werde ich kurz erklären, wie man mit einer SQLite Datenbank in C# arbeitet.

      Was braucht ihr?
      1. Die SQLite Setup Exe von sourceforge
      2. 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:

      Quellcode

      1. using System.Data;
      2. using System.Data.Common;
      3. using System.Data.SQLite;
      Neue Datenbank anlegen:
      Um eine neue Datenbank-Datei anzulegen, benutzt ihr diesen Codeausschnitt:

      Quellcode

      1. SQLiteConnection.CreateFile("c:\\mydatabasefile.db3");
      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:

      Quellcode

      1. SQLiteConnection connection = new SQLiteConnection();
      2. connection.ConnectionString = "Data Source=c:\\mydatabasefile.db3";
      3. 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:

      Quellcode

      1. SQLiteCommand command = new SQLiteCommand(connection);
      Commandliste:[INDENT]->Tabelle erstellen:
      Um eine Tabelle hinzuzufügen, gibt es Create als Command. Beispiel:

      Quellcode

      1. 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:

      Quellcode

      1. command.CommandText = "INSERT INTO Test (testspalte) VALUES( 'Test-Datensatz!')";
      [/INDENT][INDENT]->Eintrag löschen:
      Um einen Datensatz zu löschen, müsste ihr Delete verwenden. Beispiel:

      Quellcode

      1. command.CommandText = "DELETE from Test where testspalte='1'";
      [/INDENT][INDENT]->Eintrag updaten:
      Es gibt auch die Möglichkeit die Daten in der DB upzudaten. Beispiel:

      Quellcode

      1. command.CommandText = "Update Test SET testspalte='1' WHERE ID='4' ;
      [/INDENT][INDENT]->Einträge ausgeben:
      Um Datensätze auszugeben, gibt es folgende Methode:

      Quellcode

      1. command.CommandText = "SELECT * FROM Test";
      (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:

      Quellcode

      1. command.ExecuteNonQuery();
      Dannach kann man, wenn man nicht noch mehr Commands ausführen will, die Ressourcen des Command freigeben:

      Quellcode

      1. command.Dispose();
      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:

      Quellcode

      1. SQLiteDataReader reader = command.ExecuteReader();
      2. while (reader.Read())
      3. {
      4. //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
      5. }
      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:

      Quellcode

      1. reader.Dispose();
      2. reader.Close();
      Datenbank schließen:
      Die Datenbank zu schließen ist recht einfach. Dafür müsst ihr nur Close aufrufen. Beispiel:

      Quellcode

      1. connection.Close();
      Konsolenbeispiel:
      Hier nochmal ein komplettes Beispiel, wie man mit der Datenbank arbeitet.

      Quellcode

      1. using System;
      2. using System.Collections.Generic;
      3. using System.Linq;
      4. using System.Text;
      5. using System.Data;
      6. using System.Data.Common;
      7. using System.Data.SQLite;
      8. using System.IO;
      9. namespace ConsoleApplication1
      10. {
      11. class Program
      12. {
      13. static void Main(string[] args)
      14. {
      15. if (File.Exists(Environment.CurrentDirectory + "/Database.db3") == false)
      16. {
      17. //erstellen der Datenbank falls diese nicht existiert
      18. SQLiteConnection.CreateFile("c:\\mydatabasefile.db3");
      19. }
      20. //Verbindung herstellen
      21. SQLiteConnection connection = new SQLiteConnection();
      22. connection.ConnectionString = "Data Source=c:\\mydatabasefile.db3";
      23. connection.Open();
      24. SQLiteCommand command = new SQLiteCommand(connection);
      25. // Erstellen der Tabelle, sofern diese noch nicht existiert.
      26. command.CommandText = "CREATE TABLE IF NOT EXISTS Test ( id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,Testspalte VARCHAR(100) NOT NULL);";
      27. command.ExecuteNonQuery();
      28. // Einfügen zweier Test-Datensätze.
      29. command.CommandText = "INSERT INTO Test (Testspalte) VALUES( 'Test-Datensatz!')";
      30. command.ExecuteNonQuery();
      31. command.CommandText = "INSERT INTO Test (Testspalte) VALUES( 'Test-Datensatz2!')";
      32. command.ExecuteNonQuery();
      33. // Auslesen der Datensätze.
      34. command.CommandText = "SELECT Testspalte FROM Test";
      35. SQLiteDataReader reader = command.ExecuteReader();
      36. while (reader.Read())
      37. {
      38. Console.WriteLine(reader[0].ToString());
      39. }
      40. Console.Read();
      41. }
      42. }
      43. }
      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.
      Dateien
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • So Kogoro,
      Da offenbar keiner was postet oder sich alle nicht recht trauen, kommt hier mal mein Feedback.
      Dein Guide ist sehr verständlich geschrieben, alle Dinge sind mit Beispielen ausgestattet um sich einen Eindruck zu verschaffen.
      Getestet habe ich es noch nicht, jedeoch denke ich dass ich dies noch tun werde, bzw ein anderer es tut und es uns mitteilt.
      Im moment kann ich nicht viel tun, ausser deinen Guide zu pinnen, weitere Dinge erfolgen später.

      MfG internetfreak

      #pinned