Как создать и сохранить базу данных SQLite с нуля в коде, используя System.Data.SQLite и C #? - PullRequest
7 голосов
/ 14 октября 2011

У меня есть инструмент для создания базы данных, и я создаю базу данных с нуля. Это делается так же, как упомянуто Здесь . Он создает временную базу данных, и я могу добавить в нее данные.

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

Я не могу найти метод Save или Create в System.Data.SQLite, и при его создании с System.IO.File.Create(myDBFilename); создается файл, к которому SQLite не может подключиться.

Как мне создать и сохранить базу данных в коде с нуля?

Ответы [ 3 ]

8 голосов
/ 14 октября 2011

Попробуйте это, SQLiteConnection.CreateFile ("c: \ mydatabasefile.db3");

, если все остальное терпит неудачу, здесь также есть командная строка

sqlite3 test.db
sqlite> CREATE TABLE cars (id INTEGER PRIMARY KEY AUTOINCREMENT, текст модели, целое число года);
sqlite> вставить в значения автомобилей (модель, год) («Ford 350 ″, 2007);
sqlite> вставить в автомобили (модель, год) значения («Buick Skylark», 1953);
sqlite> вставить в автомобили (модель, год) значения («Honda Civic», 2002);
sqlite> Выбрать *от автомобилей;
1 | Ford 350 | 2007
2 | Buick Skylark | 1953
3 | Honda Civic | 2002
sqlite> .quit

7 голосов
/ 31 января 2013

Вам не нужно вызывать метод SQLiteConnection.CreateFile.

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

using (var connection = new SQLiteConnection("Data Source=C:\\database.db"))
{
    // foo
}

Он попытается открыть файл базы данных C:\\database.db, если он существует, и если он не существует, он будет создан.

1 голос
/ 14 октября 2011

Предполагая использование c # -sqlite,

когда вы создаете соединение, используя соответствующий API, вы фактически передаете имя файла для использования в качестве параметра. Если файл не существует, он создается (по умолчанию). например,

new SQLiteDatabase("c:\\foo.db")

Конечно, потому что вам нужно избежать обратной косой черты (это потому, что это строка). Предварительное создание файла не работает, потому что результирующий файл не является базой данных sqlite, и поэтому его нельзя использовать (поэтому я предполагаю, что в этом случае вы получаете ошибку).

...