¿Hay un contenedor .NET / C # para SQLite? [cerrado]

267

Me gustaría usar SQLite desde C # .Net, pero parece que no puedo encontrar una biblioteca adecuada. ¿Hay uno? Uno oficial? ¿Hay otras formas de usar SQLite que con un contenedor?

ian93
fuente
44
Este es un duplicado de esta pregunta: stackoverflow.com/questions/26020/… y tiene una respuesta diferente.
Stewart Johnson
2
En realidad, creo que ambas respuestas aceptadas se vinculan al mismo proyecto.
Colin el

Respuestas:

328

Desde https://system.data.sqlite.org :

System.Data.SQLite es un adaptador ADO.NET para SQLite.

System.Data.SQLite fue iniciado por Robert Simpson. Robert todavía tiene privilegios de compromiso en este repositorio, pero ya no es un contribuyente activo. El trabajo de desarrollo y mantenimiento ahora lo realiza principalmente el equipo de desarrollo de SQLite. El equipo de SQLite se compromete a admitir System.Data.SQLite a largo plazo.

"System.Data.SQLite es el motor de base de datos SQLite original y un proveedor ADO.NET 2.0 completo, todo en un solo ensamblaje de modo mixto. Es un reemplazo completo para el sqlite3.dll original (incluso puede cambiarle el nombre a sqlite3.dll). A diferencia de los ensamblados mixtos normales, no tiene dependencia del vinculador en el tiempo de ejecución de .NET, por lo que puede distribuirse independientemente de .NET ".

Incluso es compatible con Mono.

ine
fuente
33
Esta es una vieja pregunta, pero tuve que agregar mis $ 0.02. System.Data.SQLite rocks. Es de calidad súper refinada, estable y de calidad comercial. Lo mejor de todo es que es 100% de código administrado y se ha lanzado como código fuente de dominio público.
Nathan Ridley
44
Solo por coherencia, porque la gente habla de ambos como cosas diferentes. En sqlite.phxsoftware.com se apunta a sourceforge.net/projects/sqlite-dotnet2 para descargar.
yeyeyerman
16
Este contenedor ya no está siendo desarrollado por su autor original, y el desarrollo parece haber sido asumido por el propio SQLite. El nuevo sitio está en system.data.sqlite.org, aunque en este momento parece menos fácil de usar y más trabajo en progreso en comparación con el original.
mikel
55
@NathanRidley - ¿Está seguro de su participación del 100% logró, porque esta respuesta dice "System.Data.SQLite es el motor de base de datos SQLite original y un completo proveedor de ADO.NET 2.0, todo en un solo modo mixto montaje."
LogicNP
2
Para su información, traté de usar el paquete Nuget estándar Microsoft.Data.Sqlite .NET de Microsoft, pero falló en un puñado de pruebas de integración en la biblioteca AsyncPoco Github. Después de cambiar a System.Data.SQLite, todo funcionó perfectamente.
Lee Grissom
15

La gente de sqlite.org se ha hecho cargo del desarrollo del proveedor ADO.NET:

Desde su página de inicio :

Esta es una bifurcación del popular adaptador ADO.NET 4.0 para SQLite conocido como System.Data.SQLite. El creador de System.Data.SQLite, Robert Simpson, está al tanto de esta bifurcación, ha expresado su aprobación y ha otorgado privilegios en el nuevo repositorio de Fossil. El equipo de desarrollo de SQLite tiene la intención de mantener System.Data.SQLite en el futuro.

Las versiones históricas, así como los foros de soporte originales, todavía se pueden encontrar en http://sqlite.phxsoftware.com , aunque no ha habido actualizaciones de esta versión desde abril de 2010.

La lista completa de características se puede encontrar en su wiki . Lo más destacado incluye

  • Soporte de ADO.NET 2.0
  • Soporte completo de Entity Framework
  • Soporte mono completo
  • Soporte de Visual Studio 2005/2008 en tiempo de diseño
  • Marco compacto, soporte C / C ++

Las DLL publicadas se pueden descargar directamente desde el sitio .

David Schmitt
fuente
Los archivos DLL ya están disponibles
zomf
8

Definitivamente iría con System.Data.SQLite (como se mencionó anteriormente: http://sqlite.phxsoftware.com/ )

Es coherente con ADO.NET (System.Data. *) Y se compila en una sola DLL. No sqlite3.dll: porque el código C de SQLite está incrustado en System.Data.SQLite.dll. Un poco de magia administrada de C ++.

tonyz
fuente
el enlace es actualmente 404
SqlACID
7

sqlite-net es una biblioteca mínima de código abierto para permitir que las aplicaciones .NET y Mono almacenen datos en bases de datos SQLite 3 . Más información en la página wiki .

Está escrito en C # y está destinado a ser simplemente compilado con sus proyectos. Primero fue diseñado para funcionar con MonoTouch en el iPhone, pero ha crecido para funcionar en todas las plataformas (Mono para Android, .NET, Silverlight, WP7, WinRT, Azure, etc.).

Está disponible como un paquete Nuget , donde es el segundo paquete SQLite más popular con más de 60,000 descargas a partir de 2014.

sqlite-net fue diseñado como una capa de base de datos rápida y conveniente. Su diseño se desprende de estos objetivos:

  • Muy fácil de integrar con proyectos existentes y con proyectos MonoTouch.
  • Thin wrapper sobre SQLite y debe ser rápido y eficiente. (La biblioteca no debe ser el cuello de botella de rendimiento de sus consultas).
  • Métodos muy simples para ejecutar operaciones CRUD y consultas de forma segura (usando parámetros) y para recuperar los resultados de esas consultas de una manera fuertemente tipada.
  • Funciona con su modelo de datos sin obligarlo a cambiar sus clases. (Contiene una pequeña capa ORM reflejada).
  • 0 dependencias aparte de una forma compilada de la biblioteca sqlite2.

Las no metas incluyen:

  • No es una implementación de ADO.NET. Este no es un controlador SQLite completo. Si lo necesita, use System.Data.SQLite.
dodgy_coder
fuente
Noté que la mayoría de los comentarios anteriores a 2014 decían System.Data.SQLite que intenté instalar en mi aplicación Windows Store (no funcionó). Sqlite-net funciona.
JeeShen Lee
2

Mono viene con una envoltura. https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 proporciona un código para envolver el dll 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 una manera amigable para .net. Funciona en Linux o Windows.

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

Expiación limitada
fuente
2

Microsoft.Data.Sqlite

Microsoft ahora proporciona Microsoft.Data.Sqlite como una solución SQLite propia para .NET, que se proporciona como parte de ASP.NET Core. La licencia es la licencia de Apache, versión 2.0 .

* Descargo de responsabilidad: todavía no he intentado usar esto yo mismo, pero hay cierta documentación provista en Microsoft Docs aquí para usarlo con .NET Core y UWP.

Christopher Kyle Horton
fuente
2

Para aquellos como yo que no necesitan o no quieren ADO.NET, aquellos que necesitan ejecutar código más cerca de SQLite, pero aún compatibles con netstandard(.NET framework, .net core, etc.), he creado un Proyecto de código abierto 100% gratuito llamado SQLNado (para "No ADO") disponible en github aquí:

https://github.com/smourier/SQLNado

Está disponible como nuget aquí https://www.nuget.org/packages/SqlNado pero también está disponible como un único archivo .cs, por lo que es bastante práctico de usar en cualquier tipo de proyecto C #.

Es compatible con todas las características de SQLite cuando se utilizan comandos SQL, y también es compatible con la mayoría de las características de SQLite a través de .NET:

  • Asignación automática de clase a tabla (Guardar, Eliminar, Cargar, Cargar todo, LoadByPrimaryKey, LoadByForeignKey, etc.)
  • Sincronización automática de esquema (tablas, columnas) entre clases y tabla existente
  • Diseñado para operaciones seguras con hilos
  • Dónde y OrderBy LINQ / IQueryable .NET expresiones son compatibles (el trabajo todavía está en progreso en esta área), también con soporte de intercalación
  • Esquema de base de datos SQLite (tablas, columnas, etc.) expuesto a .NET
  • Las funciones personalizadas de SQLite se pueden escribir en .NET
  • La E / S incremental de BLOB de SQLite se expone como un flujo de .NET para evitar un alto consumo de memoria
  • Compatibilidad con intercalación de SQLite, incluida la posibilidad de agregar intercalaciones personalizadas utilizando código .NET
  • Compatibilidad con el motor de búsqueda de texto completo SQLite (FTS3), incluida la posibilidad de agregar tokenizadores FTS3 personalizados utilizando código .NET (como las palabras de detención localizadas, por ejemplo). No creo que ningún otro contenedor de .NET haga eso.
  • Soporte automático para Windows 'winsqlite3.dll' (solo en versiones recientes de Windows) para evitar el envío de cualquier archivo de dependencia binario . ¡Esto también funciona en las aplicaciones web de Azure!
Simon Mourier
fuente
0

http://www.devart.com/dotconnect/sqlite/

dotConnect for SQLite es un proveedor de datos mejorado para SQLite que se basa en la tecnología ADO.NET para presentar una solución completa para desarrollar aplicaciones de bases de datos basadas en SQLite. Como parte del marco de desarrollo de aplicaciones de la base de datos Devart, dotConnect para SQLite ofrece conectividad nativa de alto rendimiento a la base de datos SQLite y una serie de herramientas y tecnologías de desarrollo innovadoras.

dotConnect para SQLite presenta nuevos enfoques para diseñar la arquitectura de la aplicación, aumenta la productividad y aprovecha la implementación de la aplicación de la base de datos.

Yo uso la versión estándar, funciona perfecto :)

Antonio
fuente
0

Un contenedor básico de las funciones proporcionadas por la biblioteca sqlite. La última versión admite funciones proporcionadas por la biblioteca sqlite 3.7.10

Proyecto SQLiteWrapper

Eminem
fuente