【发布时间】:2016-09-15 16:47:10
【问题描述】:
我在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,但这似乎不是一个合适的解决方案。有什么帮助吗?
【问题讨论】: