我有以下代码来验证 MSAccess 2003 数据库是否由另一个应用程序以独占模式打开(数据库已经有密码):
OleDbConnectionStringBuilder conString = new OleDbConnectionStringBuilder();
conString.Provider = "Microsoft.Jet.OLEDB.4.0";
conString.DataSource = "some path to some mdb file";
// I don't care about the password,
// I just whant to know if it is opened in Exclusive Mode
conString["Jet OLEDB:Database Password"] = String.Empty;
conString["Mode"] = "Share Deny None";
string completeConnStr = conString.ConnectionString;
using (OleDbConnection con = new OleDbConnection(completeConnStr))
{
try
{
con.Open();
con.Close();
}
catch (Exception ex)
{
string s = ex.Message;
}
}
当数据库以独占模式打开时,它不关心密码,它会抛出 OleDbException 并显示以下消息:“文件已在使用中”。当数据库未处于独占模式并收到错误的密码时,它会抛出 OleDbException 并显示一条消息:“它不是有效的密码”。
如何识别这两个异常?密码验证是用另一种方法进行的,所以我只想知道数据库是否以独占模式打开,然后再用“请输入密码”对话框打扰用户。