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

90

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

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

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

Теги:
system.data.sqlite

1 ответ

183
Лучший ответ

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

Как SQLITE в С#

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

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

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

using System.Data.SQLite;

Здесь вы можете найти dll:

SQLite DLL

Здесь вы можете найти способ NuGet:

NuGet

Далее следует создать script. Создание файла базы данных:

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

После того, как вы создали create script на С#, я думаю, вы можете добавить транзакции отката, это безопаснее, и это приведет к сбою вашей базы данных, потому что данные будут зафиксированы в конце в одной большой части как атомарная операция с базой данных, а не небольшими частями, где она может выйти из строя на 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
  • 0
    В моем тесте использование System.Transactions.TransactionScope работает не так, как ожидалось, он будет выполнять каждый ExecuteNonQuery немедленно, а не все вместе, как SQLiteTransaction . Зачем использовать TransactionScope ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню