Я пишу приложение, используя C # и System.Data.SQLite (библиотека из https://system.data.sqlite.org), и чувствую, что бьюсь головой об стену. Мои модульные тесты на моих больших кусках кодаслучайным образом генерируют исключения, поэтому, готовясь задать вопрос здесь, я начал новый проект с как можно меньшим количеством кода. Этот кусок кода, который создает новый файл sqlite
, а затем добавляет к нему таблицу, продолжает выдавать ошибку Database is not open
всякий раз, когда пытается добавить таблицу.
Глядя на похожие вопросы о переполнении стека, многие из них касаются использования SQLite с Android, что здесь не так.
В своем исследовании я видел, что хочу держать соединение открытым только столько, сколько мне нужно, но, как вы можете видеть из примера кода, я использую using
для изоляции соединения.и команда рядом друг с другом, но у меня все еще есть проблемы.
Возможно, что-то очевидно, что я делаю неправильно, но я не могу понять, что это такое.
Спасибо!
using System.Data.SQLite;
namespace SmallCode {
class Program {
private const string DB_NAME = "Test.sqlite";
private const string DB_CONN_STRING = "Data Source=" + DB_NAME + ";Version=3;";
static void Main(string[] args) {
Program p = new Program();
SQLiteConnection.CreateFile(DB_NAME);
using (SQLiteConnection c = new SQLiteConnection(DB_CONN_STRING)) {
string sqlCreateTableAccount = "CREATE TABLE ACCOUNT (ID INTEGER PRIMARY KEY, NAME TEXT NOT NULL);";
using (SQLiteCommand cmd = new SQLiteCommand(sqlCreateTableAccount, c)) {
// EXCEPTION THROWN ON NEXT LINE
cmd.ExecuteNonQuery();
}
}
}
}
}