SQLConnection.Open(); 抛出exception

更新旧的软件,但为了保持向后兼容性,我需要连接到.mdb(访问)数据库。

我使用以下连接,但一直有exception,为什么?

我已经validation了路径,数据库存在等等,这一切都是正确的。

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; } 

exception消息是:

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及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 =“洛子峰”;

             string ConnectionString =“Data Source =”+ Server +“;”  +
                                       “初始目录=”+数据库+“;”  + 
                                       “用户ID ='';”  + 
                                       “密码=”+密码+“;”;
             bool bDatabaseOk = false;
            使用(SqlConnection SQLConnection = new SqlConnection()){

                尝试
                 {
                     SQLConnection.ConnectionString = ConnectionString;
                     SQLConnection.Open();
                     bDatabaseOk = true;
                 }
                 catch(SqlException Ex)
                 {
                    //在这里处理SqlException ....
                    //
                    //无法连接
                     bDatabaseOk = false;
                 }
             } 
             return bDatabaseOk;