【发布时间】:2023-01-11 17:58:28
【问题描述】:
每当我点击我网页上的删除按钮时,我总是收到“连接未关闭。连接的当前状态是打开的。”,但是我已经关闭了连接。
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();
但我最终遇到了同样的错误
【问题讨论】:
-
看起来您正在保持一个连接并将其用于所有目的。不要那样做。在需要时创建新连接,请使用 using 模式。
-
我觉得在使用 block close 连接自动关闭的时候最好使用
using (SqlConnection connection = new SqlConnection(connectionString)) { }。 -
了解如何正确安全地参数化您的 SQL 查询。您的代码对 SQL 注入开放。
-
您也不应该在同一个类中混合使用 UI 和数据访问。将它们捆绑在一起使得很难换出任何一个或进行独立测试。将您的数据访问移至新类(查找存储库模式)。
标签: c# sql asp.net sql-server