Crear base de datos SQLite y tabla [cerrado]

150

Dentro del código de la aplicación C #, me gustaría crear y luego interactuar con una o más bases de datos SQLite.

¿Cómo inicializo un nuevo archivo de base de datos SQLite y lo abro para leer y escribir?

Después de la creación de la base de datos, ¿cómo ejecuto una instrucción DDL para crear una tabla?

Campanita
fuente

Respuestas:

290

¡El siguiente enlace lo llevará a un gran tutorial, que me ayudó mucho!

Cómo SQLITE en C #

Casi utilicé todo en ese artículo para crear la base de datos SQLite para mi propia aplicación C #.

No olvide descargar el SQLite.dll y agregarlo como referencia a su proyecto. Esto se puede hacer usando NuGet y agregando el dll manualmente.

Después de agregar la referencia, consulte la dll de su código utilizando la siguiente línea en la parte superior de su clase:

using System.Data.SQLite;

Puedes encontrar los dll aquí:

DLL de SQLite

Puedes encontrar la forma NuGet aquí:

NuGet

El siguiente es el script de creación. Crear un archivo de base de datos:

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

Después de crear un script de creación en C #, creo que es posible que desee agregar transacciones de reversión, es más seguro y evitará que su base de datos falle, porque los datos se confirmarán al final en una gran pieza como una operación atómica para el base de datos y no en partes pequeñas, donde podría fallar en la quinta de 10 consultas, por ejemplo.

Ejemplo sobre cómo usar transacciones:

 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
fuente
55
Buena respuesta clara. +1 Aquí hay otro ejemplo que muestra cuán rápido puede ser SQLite al insertar y recuperar registros: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK
En mi prueba, el uso System.Transactions.TransactionScopeno funciona como se esperaba, se ejecutará de ExecuteNonQueryinmediato y no todos juntos, como SQLiteTransaction. ¿Por qué usar TransactionScope?
MrCalvin
1
Prefiero SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;usarloTransactionScope
user643011