Итак, у меня есть метод, который должен проверить, существует ли таблица в базе данных, которая определяется следующим образом:
internal override bool TableExists(string tableName)
{
bool tableExists = false;
// Check the Tables schema and see if the table exists
using (SQLiteConnection conn = (SQLiteConnection) CreateConnection())
{
conn.Open();
DataRow[] rows = conn.GetSchema("Tables").Select(string.Format("Table_Name = '{0}'", tableName));
tableExists = (rows.Length > 0);
}
// Actually called elsewhere in the code, just here for testing.
File.Delete(DatabaseEnvironmentInfo.GetPrimaryDataFile(DatabaseName));
return tableExists;
}
CreateConnection()
просто создает новое соединение со строкой соединения, поэтому я нене думаю, что проблема есть.Если я удалил строку conn.GetSchema("Tables")...
и смог удалить файл базы данных, но если я добавил эту строку обратно, я получил следующее исключение при попытке удалить после using
:
System.IO.IOException: процесс не может получить доступ к файлу 'C: \ db.sqlite', поскольку он используется другим процессом.
Do DataRow
объекты сохраняют соединение сбаза данных или кто-нибудь знает, в чем проблема может быть?Если есть лучший способ проверить, существует ли таблица в SQLite, я тоже открыт для этого.
Спасибо!