У меня есть следующий метод внутри class DBConnection
. Я вызываю метод следующим образом: SQLiteConnection conn = DBConnection.OpenDB();
, когда я хочу открыть соединение, чтобы я мог выполнять свои запросы. Я могу вызвать аналогичный метод, когда хочу закрыть соединение.
Метод:
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 в моем методе, но это не похоже на правильное решение. Любая помощь?