簡體   English   中英

C#connection.Open()異常

[英]C# connection.Open() exception

我試圖連接到我的數據庫localhost但由於某種原因,它拋出一個異常,我無法找出原因和地點。

private void Initialize()
    {
        server = "localhost";
        database = "dbname";
        uid = "uname";
        password = "pass";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" +
        database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new SqlConnection(connectionString);
    }

這是我的初始化函數; 我的問題是:

    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
             ...

當我調試程序時,它保持在“connection.Open();” 行了一段時間,然后我在控制台上看到“System.Data.dll中的異常拋出:'System.Data.SqlClient.SqlException'”。 但它不會崩潰,只是跳過。

如果要打開與MySql的連接,則不要使用System.Data.SqlClient命名空間中的類,而是使用MySql.Data.MySqlClient的類

這些類是MySqlConnectionMySqlCommandMySqlDataReader等......
如果您嘗試使用SqlConnection類,則如果要打開的數據庫是MySql,則會收到此錯誤,因為它只能與Sql Server,Sql Server Express或LocalDB數據庫系統一起使用。

connection = new MySqlConnection(connectionString);

當然,要使用MySql.Data.MySqlClient命名空間,您需要下載並安裝MySql NET Connector ,然后項目中的引用添加到程序集MySql.Data.dll(並將使用MySql.Data.MySqlClient添加到需要使用這些類的每個cs文件的頂部)

它沒有崩潰,因為你在try-catch塊中打開連接,所以程序認為你正在處理異常。 如果你想讓它崩潰,擺脫try-catch塊。 (這將是一個糟糕的用戶體驗。)

或者,在try-catch之后,您可以檢查連接是否有效,然后執行某些操作(如果不是)。

if ((connection == null) || (connection.State != ConnectionState.Open)) { 
    /* do something here to indicate to the user there was an issue.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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