[英]SQLConnection.Open(); throwing exception
更新舊的軟件,但為了保持向后兼容性,我需要連接到.mdb(訪問)數據庫。
我使用以下連接,但一直有異常,為什么?
我已經驗證了路徑,數據庫存在等等,這一切都是正確的。
string Server = "localhost";
string Database = drive + "\\btc2\\state\\states.mdb";
string Username = "";
string Password = "Lhotse";
string ConnectionString = "Data Source = " + Server + ";" +
"Initial Catalog = " + Database + ";" +
"User Id = '';" +
"Password = " + Password + ";";
SqlConnection SQLConnection = new SqlConnection();
try
{
SQLConnection.ConnectionString = ConnectionString;
SQLConnection.Open();
}
catch (Exception Ex)
{
// Try to close the connection
if (SQLConnection != null)
SQLConnection.Dispose();
//
//can't connect
//
// Stop here
return false;
}
異常消息是:
建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱是否正確,以及SQL Server是否配置為允許遠程連接。 (提供者:命名管道提供程序,錯誤:40 - 無法打開與SQL Server的連接)
究竟是什么讓你認為SQL Server連接(SqlConnection)願意連接到MDB Access數據庫?
如果連接到Access,請使用OleDbConnection 。 有關Access連接字符串,請參閱http://www.connectionstrings.com/access
您需要在連接字符串中添加數據提供程序:
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\\ mydatabase.mdb; User Id = admin; Password =;
使用using
子句嘗試這個更安全的版本...對於Database
變量,使用System.IO.Path.Combine
方法會更好更安全...:
string Server = "localhost"; string Database = System.IO.Path.Combine(@"C:\", @"\btc2\state\states.mdb"); string Username = ""; string Password = "Lhotse"; string ConnectionString = "Data Source = " + Server + ";" + "Initial Catalog = " + Database + ";" + "User Id = '';" + "Password = " + Password + ";"; bool bDatabaseOk = false; using (SqlConnection SQLConnection = new SqlConnection()){ try { SQLConnection.ConnectionString = ConnectionString; SQLConnection.Open(); bDatabaseOk = true; } catch (SqlException Ex) { // Handle the SqlException here.... // //can't connect bDatabaseOk = false; } } return bDatabaseOk;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.