В настоящее время я работаю над приложением UWP, использующим пространство имен Microsoft.Data.Sqlite
.
Я могу записать данные в базу данных и все, но когда я хочу удалить базу данных, я получаю сообщение об ошибке ExecuteNonQuery can only be called when the connection is open.
Я действительно новичок в использовании SQLite и баз данных в целом, поэтому обязательно возникнут некоторые ошибки. Я просто не могу найти ничего, связанного с этой ошибкой, поэтому я должен спросить здесь.
Это код, который я использую для инициализации базы данных:
public static void InitializeDatabase()
{
using (SqliteConnection db =
new SqliteConnection($"Filename=DashboardDatabase.db"))
{
db.Open();
const string tableCommand = "CREATE TABLE IF NOT EXISTS " +
"VisibilityTable (" +
"ParameterId INTEGER NOT NULL PRIMARY KEY, " +
"UserVisibility INTEGER NOT NULL, " +
"GeneralVisibility INTEGER NOT NULL, " +
"Format TEXT NOT NULL)";
SqliteCommand createTable = new SqliteCommand(tableCommand, db);
try
{
createTable.ExecuteReader();
}
catch (SqliteException sqliteException)
{
Log.Logger.Error("An Error occurred while creating a table in the database:");
Log.Logger.Error(sqliteException.Message);
}
db.Close();
}
}
И это код, который я использую для удаления таблицы и который создает ошибку, как только он хочет запустить метод ExecuteNonQuery
.
public static void DeleteTable()
{
using (SqliteConnection db = new SqliteConnection("Filename=DashboardDatabase.db"))
{
db.Open();
SqliteCommand deleteCommand = new SqliteCommand("DROP TABLE VisibilityTable");
deleteCommand.ExecuteNonQuery();
db.Close();
}
}
Я был бы очень признателен за помощь в этой ситуации.
EDIT:
Как отметил JayV в комментариях, мне не удалось добавить деталь в SqliteCommand ...
Таким образом, решение было изменить эту строку:
SqliteCommand deleteCommand = new SqliteCommand("DROP TABLE VisibilityTable");
к этому:
SqliteCommand deleteCommand = new SqliteCommand("DROP TABLE VisibilityTable", db);