2008-08-25 16 views
37

He hecho esto antes en C++ al incluir sqlite.h, pero ¿hay alguna manera similarmente fácil en C#?¿Cuál es la mejor manera de conectar y usar una base de datos sqlite desde C#

+3

Este es un duplicado de esta pregunta: http://stackoverflow.com/questions/93654/is-there-a-netc-wrapper-for-sqlite y tiene una respuesta diferente. –

+0

Posible duplicado de [¿Hay un contenedor .NET/C# para SQLite?] (Https://stackoverflow.com/questions/93654/is-there-a-net-c-wrapper-for-sqlite) – Flimzy

Respuesta

12

He utilizado este con gran éxito:

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

libre sin restricciones.

(Nota de opinión: Sitio original ya no existe El enlace de arriba tiene un enlace que apunta al sitio 404 y tiene toda la información del original.)

--Bruce

60

Estoy con, Bruce. YO ESTOY usando http://system.data.sqlite.org/ con gran éxito también. He aquí un ejemplo simple clase que he creado:

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; 
    } 
} 

También hay un NuGet package: System.Data.SQLite disponible.

+1

"Fuente de datos =/ruta/a/archivo.db; Nuevo = Falso; " *** si no desea perder todos sus datos y tablas cada vez ***. – Fil

+0

no funciona en VS 2017.Muestra el siguiente error: Excepción no controlada: System.BadImageFormatException: No se pudo cargar el archivo o ensamblado 'System.Data.SQLite, Version = 1.0.79.0, Culture = neutral, PublicKeyToken = db937bc2d44ff139'. Se intentó cargar un programa con un formato incorrecto. en ConsoleApp1_del2.Program.Main (String [] args) –

1

Mono viene con una envoltura, usa la suya!

https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 da el código para envolver el dll de SQLite real (http://www.sqlite.org/sqlite-shell-win32-x86-3071300.zip que se encuentra en la página de descarga http://www.sqlite.org/download.html/) de forma amigable .net. Funciona en Linux o Windows.

Parece el más delgado de todos los mundos, lo que minimiza su dependencia de las bibliotecas de terceros. Si tuviera que hacer este proyecto desde cero, esta es la forma en que lo haría.

3

Otra forma de utilizar la base de datos SQLite en NET Framework es usar Fluent-NHibernate.
[Es módulo de red que se envuelve alrededor de NHibernate. (Módulo de ORM - Object Relational Mapping) y permite configurar NHibernate mediante programación (sin archivos XML) con el patrón de fluidez]

Aquí está la breve 'Introducción' Descripción de cómo para hacer esto en C# paso a paso:

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

incluye un código fuente como un proyecto de Visual Studio.

Cuestiones relacionadas