SQL更新不起作用,不知道为什么
本文关键字:不知道 为什么 不起作用 更新 SQL | 更新日期: 2023-09-27 18:33:51
我有以下代码,只是不会更新记录。 有问题的数据显示在 DataGridView 中,因此我知道我正在毫无问题地连接到数据库。 如果有人发现这有什么问题,请告诉我,我已经盯着它看了一段时间了,我看不到任何看起来不对劲的地方。 没有例外抛出它只是,什么都不做。 提前谢谢。
string strSQLConnectionString = "Data Source=(LocalDB)''v11.0;AttachDbFilename=|DataDirectory|''dbase.mdf;Integrated Security=True";
string strUpdateCommand = "UPDATE table1 SET Active = @Active WHERE Order = @Order";
SqlConnection connection = new SqlConnection(strSQLConnectionString);
SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection);
connection.Open();
updateCommand.Parameters.AddWithValue("Order", "1");
updateCommand.Parameters.AddWithValue("@Active", "True");
updateCommand.ExecuteNonQuery();
connection.Close();
updateCommand.Parameters.Clear();
在实际代码中,有一个 try/catch 从 connection.open 开始,到 parameters.clear 结束。再次感谢您对此的任何帮助。埃里克
编辑@Rahul辛格 感谢您的回复和博客链接。 您建议的添加缺少的"@"的更改无法解决问题。 相反,我现在得到的是 executenonquery 行上的"连接未打开,连接必须打开"异常。 我接受了你关于使用块的建议(谢谢!(,修改后的代码是
using (SqlConnection connection = new SqlConnection(strSQLConnectionString))
{
using (SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection))
{
updateCommand.Parameters.AddWithValue("@Order", "1");
updateCommand.Parameters.AddWithValue("@Active", "True");
updateCommand.ExecuteNonQuery();
}
}
奇怪的是,如果我明确地说"connection.open(("和"connection.close((;",那么我不会收到此错误,但同样,什么也没做。 感谢您对此的任何进一步帮助,我即将从这个头皮上的所有挠头中擦出一个洞。
因为您在以下行中缺少@
:-
updateCommand.Parameters.AddWithValue("@Order", "1");
参数应与查询完全匹配。另外,请阅读这篇关于"我们可以停止使用AddWithValue"的博客。
此外,您应该使用 using
块进行编码,以自动释放昂贵的资源。像这样的东西:-
using(SqlConnection connection = new SqlConnection(strSQLConnectionString)
{
using(SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection)
{
//Your code goes here.
}
}