Créer une base de données et une table SQLite [fermé]

150

Dans le code d'application C #, je voudrais créer puis interagir avec une ou plusieurs bases de données SQLite.

Comment initialiser un nouveau fichier de base de données SQLite et l'ouvrir pour la lecture et l'écriture?

Après la création de la base de données, comment exécuter une instruction DDL pour créer une table?

Fée Clochette
la source

Réponses:

290

Le lien suivant vous amènera à un excellent tutoriel, qui m'a beaucoup aidé!

Comment SQLITE en C #

J'ai presque tout utilisé dans cet article pour créer la base de données SQLite pour ma propre application C #.

N'oubliez pas de télécharger le SQLite.dll et de l'ajouter comme référence à votre projet. Cela peut être fait en utilisant NuGet et en ajoutant la dll manuellement.

Après avoir ajouté la référence, reportez-vous à la dll de votre code en utilisant la ligne suivante en haut de votre classe:

using System.Data.SQLite;

Vous pouvez trouver les dll ici:

DLL SQLite

Vous pouvez trouver la méthode NuGet ici:

NuGet

Le prochain est le script de création. Création d'un fichier de base de données:

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();

Après avoir créé un script de création en C #, je pense que vous voudrez peut-être ajouter des transactions d'annulation, c'est plus sûr et cela empêchera votre base de données d'échouer, car les données seront validées à la fin en un seul gros morceau comme une opération atomique au base de données et pas en petits morceaux, où il pourrait échouer à 5e sur 10 requêtes par exemple.

Exemple d'utilisation des transactions:

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

     //Indicates that creating the SQLiteDatabase went succesfully, so the database can be committed.
     tran.Complete();
 }
Max
la source
5
Belle réponse claire. +1. Voici un autre exemple qui vous montre à quel point SQLite peut être rapide pour insérer et récupérer des enregistrements: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK
Dans mon test, l'utilisation System.Transactions.TransactionScopene fonctionne pas comme prévu, elle s'exécutera ExecuteNonQueryimmédiatement et pas toutes ensemble, comme SQLiteTransaction. Pourquoi utiliser TransactionScope?
MrCalvin
1
Je préfère SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;plutôt que d'utiliserTransactionScope
user643011