SQL Server 如何修复“连接未关闭,连接的当前状态为打开”,

vi4fp9gy  于 2023-01-12  发布在  其他
关注(0)|答案(1)|浏览(259)

每当我点击网页上的删除按钮时,我总是收到“连接没有关闭。连接的当前状态是打开的。",但我已经关闭了连接。

protected void DeleteButton_Click(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand comm = new SqlCommand("DELETE FROM [Table] where [Id] ='"+Id.Text+"'", con);
            comm.ExecuteNonQuery();
            con.Close();
            ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('Successfully Deleted');", true);

            disp_data();
        }

我甚至试着改变

con.Close();

con.Dispose();

但我还是犯了同样的错误

z9ju0rcb

z9ju0rcb1#

你可能会认为一直创建新连接的代价很高。其实不然,因为有内置的连接池,连接实际上会被重用。因此,你应该这样做:

protected void DeleteButton_Click(object sender, EventArgs e)
{
    using (var connection = new SqlConnection(myConnectionString))
    {
        connection.Open();
        using (var command = new SqlCommand("DELETE FROM [Table] where [Id] ='"+Id.Text+"'", connection)
        { 
            command.ExecuteNonQuery();
        }
        ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('Successfully Deleted');", true);
        disp_data();
}

using模式负责关闭和释放SqlConnection和SqlCommand。接下来,您应该将con作为类成员删除,并在整个代码中使用此模式。

相关问题