Подтвердить что ты не робот

Как я могу создать новую базу данных SQLite со всеми таблицами "на лету"?

Когда пользователь запускает мое приложение, он может создать новый проект, что означает создание новой базы данных со всеми таблицами.

Я не хочу копировать структуру таблиц из старой базы данных/проекта, потому что тем временем таблицы могли быть изменены из-за обновления программой. Это приведет к сбоям.

Итак, при каждом обновлении приложения я также должен развернуть файл script, который создает базу данных и таблицы, правильно?

Как выглядит файл script и как вы его назовете на С#?

4b9b3361

Ответ 1

Возможно, это поможет:

SQLiteConnection.CreateFile("c:\\Ik.db");

Создайте новую базу данных "на лету" и выполните на ней запрос. Запрос должен выглядеть примерно так:

CREATE TABLE IF NOT EXISTS [Setting](
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Key] NVARCHAR(2048) NULL,
[Value] NVARCHAR(2048) NULL
);

Ответ 2

Вы можете написать script, чтобы сделать все это, но вы также можете иметь проект unit test, который проверяет ваш интерфейс базы данных. Если вы это сделаете, вы захотите создать тестовую базу данных с фиктивными данными только для тестов. В основном, я хочу сказать, что если вы используете файл script для создания данных приложения, и если вы хотите добавить модульные тесты, вам нужно либо иметь для них другой файл script, либо вы хотите создать ваша база данных в коде.

Я бы поддержал создание класса в вашем коде, который может создать схему базы данных "на лету" для приложений и модульных тестов. Затем, если вы измените схему, вам нужно только беспокоиться об этом в одном месте и не иметь дело с вещами, выходящими из синхронизации (надеюсь).

Поскольку вы используете SQLite и С#, я рекомендую попробовать SQLite.NET. Это сделало мою жизнь намного легче, и я до сих пор очень доволен ею.

С SQLite.NET вы создадите SQLiteCommand, установите его CommandText в "CREATE TABLE (ваша схема здесь)", а затем вызовите ExecuteNonQuery для генерации таблицы.

Ответ 3

Для некоторой помощи вы можете проверить проект Public Domain, сделанный моим другом:  www.codeplex.com/publicdomain.

Наряду с множеством других полезных утилит загляните в Data.SQLHelper.GenerateCreateTablesQuery(DataTable[] tables). Просто используйте SQL для типа базы данных.