2008-08-25 11 views
37

zu verbinden und zu verwenden Ich habe dies bereits in C++ getan, indem ich sqlite.h eingeschlossen habe, aber gibt es einen ähnlich einfachen Weg in C#?Was ist der beste Weg, um eine SQLite-Datenbank von C#

+3

Dies ist ein Duplikat dieser Frage: http://stackoverflow.com/questions/93654/is-there-a-netc-wrapper-for-sqlite und hat eine andere Antwort. –

+0

Mögliches Duplikat von [Gibt es einen .NET/C# -Wrapper für SQLite?] (Https://stackoverflow.com/questions/93654/is-there-a-net-c-wrapper-for-sqlite) – Flimzy

Antwort

12

Ich habe dies mit großem Erfolg eingesetzt:

http://system.data.sqlite.org/

ohne Einschränkungen Free.

(Anmerkung Aus der Bewertung: Original Site nicht mehr vorhanden Der obige Link einen Link zeigt die die 404 Seiten hat und hat alle Informationen des Originals.)

--Bruce

60

Ich bin mit, Bruce. Ich benutze http://system.data.sqlite.org/ mit großem Erfolg. Hier ist eine einfache Klasse Beispiel, dass ich erstellt:

using System; 
using System.Text; 
using System.Data; 
using System.Data.SQLite; 

namespace MySqlLite 
{ 
     class DataClass 
     { 
     private SQLiteConnection sqlite; 

     public DataClass() 
     { 
       //This part killed me in the beginning. I was specifying "DataSource" 
       //instead of "Data Source" 
       sqlite = new SQLiteConnection("Data Source=/path/to/file.db"); 

     } 

     public DataTable selectQuery(string query) 
     { 
       SQLiteDataAdapter ad; 
       DataTable dt = new DataTable(); 

       try 
       { 
        SQLiteCommand cmd; 
        sqlite.Open(); //Initiate connection to the db 
        cmd = sqlite.CreateCommand(); 
        cmd.CommandText = query; //set the passed query 
        ad = new SQLiteDataAdapter(cmd); 
        ad.Fill(dt); //fill the datasource 
       } 
       catch(SQLiteException ex) 
       { 
        //Add your exception code here. 
       } 
       sqlite.Close(); 
       return dt; 
    } 
} 

Es gibt auch eine NuGet package: System.Data.SQLite zur Verfügung.

+1

"Datenquelle =/Pfad/zu/Datei.db; Neu = Falsch; " *** Wenn Sie nicht alle Ihre Daten und Tabellen jedes Mal verlieren möchten ***. – Fil

+0

funktioniert nicht in VS 2017.Es zeigt den folgenden Fehler: Nicht behandelte Ausnahme: System.BadImageFormatException: Konnte Datei oder Assembly nicht laden 'System.Data.SQLite, Version = 1.0.79.0, Culture = neutral, PublicKeyToken = db937bc2d44ff139'. Es wurde versucht, ein Programm mit einem falschen Format zu laden. bei ConsoleApp1_del2.Program.Main (String [] args) –

1

Mono kommt mit einer Verpackung, benutzen Sie ihre!

https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 gibt Code, um die tatsächliche SQLite dll (http://www.sqlite.org/sqlite-shell-win32-x86-3071300.zip gefunden auf der Download-Seite http://www.sqlite.org/download.html/) in einem .net freundliche Weise zu wickeln. Es funktioniert unter Linux oder Windows.

Dies scheint die dünnste aller Welten zu sein und Ihre Abhängigkeit von Bibliotheken von Drittanbietern zu minimieren. Wenn ich dieses Projekt von Grund auf machen müsste, würde ich es so machen.

3

Eine weitere Möglichkeit zur Verwendung der SQLite-Datenbank in .NET Framework ist die Verwendung von Fluent-NHibernate.
[Es NET-Modul ist, das um NHibernate wickelt. (ORM-Modul - Object Relational Mapping) und ermöglicht NHibernate programmatisch konfigurieren (ohne XML-Dateien) mit dem fließenden Muster]

Hier die kurze ist ‚Getting Started‘ Beschreibung wie dies in C# Schritt für Schritt zu tun:

https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started

Es einen Quellcode als Visual Studio Projekt umfasst.