簡體   English   中英

SQLConnection.Open();拋出異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM