Создать базу данных SQLite и таблицу [закрыто]

150

В коде приложения C # я хотел бы создать и затем взаимодействовать с одной или несколькими базами данных SQLite.

Как инициализировать новый файл базы данных SQLite и открыть его для чтения и записи?

После создания базы данных, как выполнить инструкцию DDL для создания таблицы?

TINKERBELL
источник

Ответы:

290

Следующая ссылка приведет вас к отличному учебнику, который мне очень помог!

Как SQLITE в C #

Я почти все использовал в этой статье, чтобы создать базу данных SQLite для моего собственного приложения на C #.

Не забудьте скачать SQLite.dll и добавить его в качестве ссылки на ваш проект. Это можно сделать с помощью NuGet и вручную добавив dll.

После того, как вы добавили ссылку, обратитесь к DLL из вашего кода, используя следующую строку в верхней части вашего класса:

using System.Data.SQLite;

Вы можете найти здесь dll:

SQLite DLL

Вы можете найти путь NuGet здесь:

NuGet

Далее идет сценарий создания. Создание файла базы данных:

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

После того, как вы создали сценарий создания в C #, я думаю, что вы, возможно, захотите добавить транзакции отката, это безопаснее, и это предотвратит сбой вашей базы данных, потому что данные будут в конце зафиксированы в виде одной большой части как атомарной операции базы данных, а не мелкими кусочками, где он может потерпеть неудачу на 5-м из 10 запросов, например.

Пример использования транзакций:

 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
Хороший четкий ответ. Добавила +1. Вот еще один пример, показывающий, насколько быстрым может быть SQLite при вставке и извлечении записей: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK
В моем тесте использование System.Transactions.TransactionScopeне работает должным образом, оно будет выполняться каждый раз, ExecuteNonQueryа не все вместе, как SQLiteTransaction. Зачем использовать TransactionScope?
MrCalvin
1
Я предпочитаю SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;использоватьTransactionScope
user643011