我有下面的代碼以驗證是否MSACCESS 2003數據庫以獨佔方式打開另一個應用程序(數據庫中已經有一個密碼):裏識別同一OleDbException類型的異常
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,並顯示一條消息:「它不是有效的密碼」。
如何識別這兩個例外?用另一種方法進行密碼驗證,所以我只想知道數據庫是否在獨佔模式下打開,然後用「請輸入密碼」對話框來煩惱用戶。
不要使用異常的'Message'屬性來告訴你異常的含義。這只是人類可讀的文本,微軟可以改變文本,或者對不同的文本使用相同的例外。例如,問問你自己,如果微軟修復了郵件中的錯字,你的代碼會發生什麼? – 2013-04-11 19:41:07
嗨,約翰!這正是我不想做的:使用消息屬性。必須有另一種方法來確定這些例外情況。 – 2013-04-11 19:49:11