Criar banco de dados SQLite e tabela [fechada]

150

No código do aplicativo C #, eu gostaria de criar e interagir com um ou mais bancos de dados SQLite.

Como inicializo um novo arquivo de banco de dados SQLite e o abro para leitura e gravação?

Após a criação do banco de dados, como executo uma instrução DDL para criar uma tabela?

Sininho
fonte

Respostas:

290

O próximo link o levará a um ótimo tutorial, que me ajudou muito!

Como SQLITE em c #

Quase usei tudo nesse artigo para criar o banco de dados SQLite para meu próprio aplicativo C #.

Não se esqueça de baixar o SQLite.dll e adicione-o como referência ao seu projeto. Isso pode ser feito usando o NuGet e adicionando a dll manualmente.

Depois de adicionar a referência, consulte a dll do seu código usando a seguinte linha na parte superior da sua classe:

using System.Data.SQLite;

Você pode encontrar as DLLs aqui:

DLLs do SQLite

Você pode encontrar o caminho NuGet aqui:

NuGet

A seguir, o script de criação. Criando um arquivo de banco de dados:

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

Depois que você criou um script de criação em C #, acho que você pode querer adicionar transações de reversão, é mais seguro e evitará que seu banco de dados falhe, porque os dados serão confirmados no final em uma grande parte como uma operação atômica para o banco de dados e não em pequenos pedaços, onde poderia falhar na 5ª das 10 consultas, por exemplo.

Exemplo de como usar transações:

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

     //Indicates that creating the SQLiteDatabase went succesfully, so the database can be committed.
     tran.Complete();
 }
Máx.
fonte
5
Boa resposta clara. Marcou com +1. Aqui está outro exemplo que mostra o quão SQLite rápida pode estar em inserir e recuperar registros: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK
No meu teste, o uso System.Transactions.TransactionScopenão funciona como esperado, ele será executado ExecuteNonQueryimediatamente e não todos juntos, como SQLiteTransaction. Por que usar TransactionScope?
MrCalvin
1
Eu prefiro SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;mais usandoTransactionScope
user643011