【发布时间】:2017-10-20 14:07:35
【问题描述】:
为什么我在尝试更新我的数据库时遇到此错误?
ExecuteNonQuery 需要一个开放且可用的连接。连接的当前状态为关闭
代码如下:
cmd1 = new SqlCommand("UPDATE [guitarBrands] SET type = @type, name = @name, image = @image WHERE id = @id", con1);
con1.Open();
cmd1.Parameters.Add(new SqlParameter("type", newType.Text));
cmd1.Parameters.Add(new SqlParameter("name", newName.Text));
cmd1.Parameters.Add(new SqlParameter("image", newImage.Text));
cmd1.Parameters.Add(new SqlParameter("id", id));
cmd1.ExecuteNonQuery();
con1.Close();
cmd1.Parameters.Clear();
cmd = new SqlCommand("UPDATE [guitarItems] SET brand = @brand WHERE id = @id", con1);
con.Open();
cmd.Parameters.Add(new SqlParameter("brand", newName.Text));
cmd.Parameters.Add(new SqlParameter("id", id));
cmd.ExecuteNonQuery();
con.Close();
cmd.Parameters.Clear();
【问题讨论】:
-
您没有正确处理您的IDisposable (SqlConnection) 项目。它们应该包含在 using 语句中,以便正确处理它们。这也将有助于解决变量中的范围问题。另外,为什么要使用两个不同的连接?您是在处理一个数据库还是两个?
-
@mason - 是的,我正在使用两个数据库。
-
你应该让你的变量名更明确。您会感到困惑,因为您同时使用了
con和con1。您正在使用con1执行两个查询,而没有使用con。查看您传递给第二个SqlCommand的参数。 -
@mason - 哦,我明白了..你的权利。如果现在一切正常,我将尝试代码..
标签: c# sql asp.net sql-server