我有以下代码来验证是否有另一个应用程序以独占模式打开了一个带有密码的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异常。
如何识别这两个异常?密码验证是在另一个方法中完成的,因此我只想知道在打扰用户进行“请输入密码”对话框之前,数据库是否以独占模式打开。