Esiste un wrapper .NET / C # per SQLite? [chiuso]


267

Mi piacerebbe usare SQLite dall'interno di C # .Net, ma non riesco a trovare una libreria appropriata. Ce n'è uno? Ufficiale? Esistono altri modi per utilizzare SQLite rispetto a un wrapper?


4
Questo è un duplicato di questa domanda: stackoverflow.com/questions/26020/… e ha una risposta diversa.
Stewart Johnson,

2
In realtà, credo che entrambe le risposte accettate siano collegate allo stesso progetto.
Colin,

Risposte:


328

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

System.Data.SQLite è un adattatore ADO.NET per SQLite.

System.Data.SQLite è stato avviato da Robert Simpson. Robert ha ancora i privilegi di commit su questo repository ma non è più un collaboratore attivo. Il lavoro di sviluppo e manutenzione viene ora svolto principalmente dal team di sviluppo di SQLite. Il team di SQLite si impegna a supportare System.Data.SQLite a lungo termine.

"System.Data.SQLite è il motore di database SQLite originale e un provider ADO.NET 2.0 completo riunito in un unico assembly in modalità mista. È una sostituzione drop-in completa per sqlite3.dll originale (puoi persino rinominarlo in sqlite3.dll). A differenza dei normali assembly misti, non ha dipendenze di linker dal runtime .NET, quindi può essere distribuito indipendentemente da .NET. "

Supporta anche Mono.


33
Questa è una vecchia domanda ma ho dovuto aggiungere i miei $ 0,02. Rocce System.Data.SQLite. È di qualità super raffinata, stabile e commerciale. Soprattutto, è un codice gestito al 100% ed è stato rilasciato come codice sorgente di dominio pubblico.
Nathan Ridley,

4
Solo per coerenza, perché le persone parlano di entrambi come cose diverse. In sqlite.phxsoftware.com viene indicato sourceforge.net/projects/sqlite-dotnet2 per il download.
yeyeyerman,

16
Questo wrapper non è più sviluppato dal suo autore originale e lo sviluppo sembra essere stato preso in carico dallo stesso SQLite. Il nuovo sito è su system.data.sqlite.org, sebbene al momento sembri meno user-friendly e più work-in-progress rispetto all'originale.
mikel

5
@NathanRidley - Sei sicuro che sia gestito al 100%, perché questa risposta dice "System.Data.SQLite è il motore di database SQLite originale e un provider ADO.NET 2.0 completo tutti raggruppati in un singolo assembly in modalità mista".
logicnp

2
Cordiali saluti, ho provato a utilizzare il pacchetto Microsoft.Data.Sqlite .NET Standard Nuget, ma non è riuscito su una manciata di test di integrazione nella libreria AsyncPoco Github. Dopo essere passati a System.Data.SQLite, tutto ha funzionato perfettamente.
Lee Grissom,



15

La gente di sqlite.org ha assunto lo sviluppo del provider ADO.NET:

Dalla loro homepage :

Questo è un fork del popolare adattatore ADO.NET 4.0 per SQLite noto come System.Data.SQLite. Il creatore di System.Data.SQLite, Robert Simpson, è a conoscenza di questo fork, ha espresso la sua approvazione e ha concesso i privilegi sul nuovo repository Fossil. Il team di sviluppo di SQLite intende mantenere System.Data.SQLite in avanti.

Le versioni storiche, così come i forum di supporto originali, sono ancora disponibili su http://sqlite.phxsoftware.com , sebbene non vi siano aggiornamenti a questa versione dall'aprile del 2010.

L'elenco completo delle funzionalità è disponibile sul loro wiki . I punti salienti includono

  • Supporto ADO.NET 2.0
  • Supporto completo per Entity Framework
  • Supporto mono completo
  • Supporto di Visual Studio 2005/2008 Design-Time
  • Compact Framework, supporto C / C ++

Le DLL rilasciate possono essere scaricate direttamente dal sito .


ora sono disponibili DLL già
pronte

8

Andrei sicuramente con System.Data.SQLite (come menzionato in precedenza: http://sqlite.phxsoftware.com/ )

È coerente con ADO.NET (System.Data. *) E viene compilato in una singola DLL. No sqlite3.dll - perché il codice C di SQLite è incorporato in System.Data.SQLite.dll. Un po 'di magia C ++ gestita.


il link è attualmente 404
SqlACID

7

sqlite-net è una libreria minima open source per consentire alle applicazioni .NET e Mono di archiviare i dati nei database SQLite 3 . Maggiori informazioni sulla pagina wiki .

È scritto in C # ed è pensato per essere semplicemente compilato con i tuoi progetti. È stato inizialmente progettato per funzionare con MonoTouch su iPhone, ma è cresciuto per funzionare su tutte le piattaforme (Mono per Android, .NET, Silverlight, WP7, WinRT, Azure, ecc.).

È disponibile come pacchetto Nuget , dove è il secondo pacchetto SQLite più popolare con oltre 60.000 download a partire dal 2014.

sqlite-net è stato progettato come un livello di database rapido e conveniente. Il suo design segue questi obiettivi:

  • Molto facile da integrare con i progetti esistenti e con i progetti MonoTouch.
  • Wrapper su SQLite e dovrebbe essere veloce ed efficiente. (La libreria non dovrebbe essere il collo di bottiglia delle prestazioni delle query.)
  • Metodi molto semplici per eseguire operazioni e query CRUD in modo sicuro (utilizzando i parametri) e per recuperare i risultati di tali query in modo fortemente tipizzato.
  • Funziona con il tuo modello di dati senza forzarti a cambiare classe. (Contiene un piccolo livello ORM guidato dalla riflessione.)
  • 0 dipendenze oltre a una forma compilata della libreria sqlite2.

I non obiettivi includono:

  • Non un'implementazione ADO.NET. Questo non è un driver SQLite completo. Se ne hai bisogno, usa System.Data.SQLite.

Ho notato che la maggior parte del commento precedente al 2014 diceva System.Data.SQLite che ho provato a installare sulla mia app di Windows Store (non ha funzionato). Sqlite-net funziona.
JeeShen Lee,

2

Mono viene fornito con un involucro. https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0 fornisce il codice per racchiudere la dll SQLite effettiva ( http: //www.sqlite. org / sqlite-shell-win32-x86-3071300.zip trovato nella pagina di download http://www.sqlite.org/download.html/ ) in un modo .net friendly. Funziona su Linux o Windows.

Questo sembra il più sottile di tutti i mondi, minimizzando la tua dipendenza da librerie di terze parti. Se dovessi fare questo progetto da zero, questo è il modo in cui lo farei.



2

Per quelli come me che non hanno bisogno o non vogliono ADO.NET, quelli che hanno bisogno di eseguire il codice più vicino a SQLite, ma ancora compatibili con netstandard(.net framework, .net core, ecc.), Ho creato un Progetto open source gratuito al 100% chiamato SQLNado (per "Not ADO") disponibile su github qui:

https://github.com/smourier/SQLNado

È disponibile come nuget qui https://www.nuget.org/packages/SqlNado ma anche disponibile come singolo file .cs, quindi è abbastanza pratico da usare in qualsiasi tipo di progetto C #.

Supporta tutte le funzionalità di SQLite quando si utilizzano i comandi SQL e supporta anche la maggior parte delle funzionalità di SQLite tramite .NET:

  • Mappatura automatica da classe a tabella (Salva, Elimina, Carica, LoadAll, LoadByPrimaryKey, LoadByForeignKey, ecc.)
  • Sincronizzazione automatica dello schema (tabelle, colonne) tra classi e tabella esistente
  • Progettato per operazioni thread-safe
  • Dove e OrderBy Sono supportate le espressioni LINQ / IQueryable .NET (i lavori sono ancora in corso in quest'area), anche con il supporto delle regole di confronto
  • Schema del database SQLite (tabelle, colonne, ecc.) Esposto a .NET
  • Le funzioni personalizzate di SQLite possono essere scritte in .NET
  • L'I / O BLOB incrementale di SQLite è esposto come flusso .NET per evitare un elevato consumo di memoria
  • Supporto delle regole di confronto SQLite, inclusa la possibilità di aggiungere regole di confronto personalizzate utilizzando il codice .NET
  • Supporto del motore di ricerca full text di SQLite (FTS3), inclusa la possibilità di aggiungere tokenizer FTS3 personalizzati utilizzando il codice .NET (come ad esempio le parole di arresto localizzate). Non credo che nessun altro wrapper .NET lo faccia.
  • Supporto automatico per 'winsqlite3.dll' di Windows (solo su versioni recenti di Windows) per evitare la spedizione di qualsiasi file binario di dipendenza . Funziona anche con le app Web di Azure !.


0

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

dotConnect per SQLite è un fornitore di dati avanzato per SQLite che si basa sulla tecnologia ADO.NET per presentare una soluzione completa per lo sviluppo di applicazioni di database basate su SQLite. Come parte del framework di sviluppo di applicazioni di database Devart, dotConnect per SQLite offre sia connettività nativa ad alte prestazioni al database SQLite sia una serie di strumenti e tecnologie di sviluppo innovativi.

dotConnect per SQLite introduce nuovi approcci per la progettazione dell'architettura delle applicazioni, aumenta la produttività e sfrutta l'implementazione delle applicazioni di database.

Uso la versione standard, funziona perfettamente :)


0

Un wrapper barebone delle funzioni fornito dalla libreria sqlite. L'ultima versione supporta le funzioni fornite dalla libreria sqlite 3.7.10

Progetto SQLiteWrapper

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.