У меня есть следующий метод внутри class DBConnection
. Я вызываю метод следующим образом: SQLiteConnection conn = DBConnection.OpenDB();
, когда я хочу открыть соединение, чтобы я мог выполнять свои запросы. Я могу вызвать аналогичный метод, когда хочу закрыть соединение.Ошибка соединения SQLite, если отсутствует база данных? (удалено/перемещено)
Метод:
public static SQLiteConnection OpenDB()
{
try
{
//Gets connectionstring from app.config
string myConnectString =
ConfigurationManager.ConnectionStrings[
"LegMedSQLLite.Properties.Settings.LegMedSQLLiteDBConnectionString"].ConnectionString;
var conn = new SQLiteConnection(myConnectString);
conn.Open();
return conn;
}
catch (SQLiteException e)
{
MessageBox.Show(e.ToString(), "TEST");
return null;
}
}
Это все работает нормально, и денди. Однако проблема заключается в попытке захвата. Представим себе следующий сценарий:
- Файл базы данных был перемещен/удален.
Исключение никогда не будет выбрано. На самом деле, первый улов, на который я натыкаюсь, - это когда я выполняю свой первый запрос - где он показывает, что нет такой таблицы (таблиц), и она выдает собственное исключение. Я был ошеломлен этим странным явлением, но вскоре обнаружил, что SQLite создает новую пустую базу данных. Пустым является среднее значение нет таблиц, ничего, просто файл базы данных SQLite с тем же именем, что и прежняя база данных, которая должна была быть там.
Это проблема, я хочу, чтобы приложение узнало, что что-то не так (база данных не найдена, повреждена, используется другим процессом и т. Д.), Как только я пытаюсь позвонить SQLiteConnection conn = DBConnection.OpenDB();
.
Естественно, я мог бы попробовать вызвать File.Exists в моем методе, но это не похоже на правильное решение. Любая помощь?
Да, я думал, что это было так хорошо! Но это не похоже на System.Data.SQLite, который делает это. Я знаю, что использование веб-серверов SQLite делает то же самое. Кроме того, я также думал о идее SQL-запроса, но это просто кажется пустой тратой. Я обязательно буду отмечать ваш ответ как принятый ответ, если нет «правильного» способа сделать это. – CasperT