Створення бази даних та таблиці SQLite [закрито]


150

У коді програми C # я хотів би створити та взаємодіяти з однією або кількома базами даних SQLite.

Як ініціалізувати новий файл бази даних SQLite та відкрити його для читання та запису?

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

Відповіді:


290

Наступне посилання приведе вас до чудового підручника, який мені дуже допоміг!

Як SQLITE в C #

Я майже використав усе, що знаходиться в цій статті, щоб створити базу даних SQLite для власної програми C #.

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

Після додавання посилання зверніться до dll зі свого коду, використовуючи наступний рядок у верхній частині класу:

using System.Data.SQLite;

Ви можете знайти DLL тут:

DLL-адреси SQLite

Ви можете знайти спосіб 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.