2023年5月4日 星期四

[研究][ASP.NET]ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。

[研究][ASP.NET]ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。

2023-05-04

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

********************************************************************************

********************************************************************************

'/' 應用程式中發生伺服器錯誤。

ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外狀況詳細資訊: System.InvalidOperationException: ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。

********************************************************************************

下面 command2.ExecuteNonQuery(); 出現錯誤
ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。
請問該如何修正?


using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))

SqlCommand command = new SqlCommand(queryString, connection);
try
{
    connection.Open();
    int counts = (Int32)command.ExecuteScalar();

        string queryString2 = @"UPDATE table1 SET Field1=1 WHERE SN=2";
        using (SqlConnection connection2 = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        {
            SqlCommand command2 = new SqlCommand(queryString2, connection2);
            command2.ExecuteNonQuery();
        }
    }
}
catch (Exception)
{
    throw;
}

修正如下

using (SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    try
    {
        connection.Open();
        int counts = (Int32)command.ExecuteScalar();

        string queryString2 = @"UPDATE table1 SET Field1=1 WHERE SN=2";
        using (SqlConnection connection2 = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
        {
            connection2.Open(); // 加入此行
            SqlCommand command2 = new SqlCommand(queryString2, connection2);
            command2.ExecuteNonQuery();
        }
    }
    catch (Exception)
    {
        throw;
    }
}


(完)

相關

沒有留言:

張貼留言