Crea database e tabella SQLite [chiuso]


150

Nel codice dell'applicazione C #, vorrei creare e quindi interagire con uno o più database SQLite.

Come posso inizializzare un nuovo file di database SQLite e aprirlo per la lettura e la scrittura?

Dopo la creazione del database, come posso eseguire un'istruzione DDL per creare una tabella?

Risposte:


290

Il prossimo link ti porterà a un ottimo tutorial, che mi ha aiutato molto!

Come SQLITE in C #

Ho quasi usato tutto in quell'articolo per creare il database SQLite per la mia applicazione C #.

Non dimenticare di scaricare SQLite.dll e aggiungerlo come riferimento al tuo progetto. Questo può essere fatto usando NuGet e aggiungendo la dll manualmente.

Dopo aver aggiunto il riferimento, fare riferimento alla dll dal codice utilizzando la seguente riga in cima alla classe:

using System.Data.SQLite;

Puoi trovare la DLL qui:

DLL di SQLite

Puoi trovare il modo NuGet qui:

NuGet

Il prossimo è lo script di creazione. Creazione di un file di database:

SQLiteConnection.CreateFile("MyDatabase.sqlite");

SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
m_dbConnection.Open();

string sql = "create table highscores (name varchar(20), score int)";

SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

sql = "insert into highscores (name, score) values ('Me', 9001)";

command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

m_dbConnection.Close();

Dopo aver creato uno script di creazione in C #, penso che potresti voler aggiungere transazioni di rollback, è più sicuro e manterrà il tuo database in errore, perché i dati verranno impegnati alla fine in un unico grande pezzo come un'operazione atomica al database e non in piccoli pezzi, dove potrebbe fallire ad esempio con una quinta di 10 query.

Esempio su come utilizzare le transazioni:

 using (TransactionScope tran = new TransactionScope())
 {
     //Insert create script here.

     //Indicates that creating the SQLiteDatabase went succesfully, so the database can be committed.
     tran.Complete();
 }

5
Bella risposta chiara. Fatto +1. Ecco un altro esempio che mostra quanto può essere veloce SQLite nell'inserimento e nel recupero dei record: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK

Nel mio test l'utilizzo System.Transactions.TransactionScopenon funziona come previsto, verrà eseguito ExecuteNonQueryimmediatamente e non tutti insieme, come SQLiteTransaction. Perché l'uso TransactionScope?
MrCalvin

1
Preferisco SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;usareTransactionScope
user643011
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.