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((;",那么我不会收到此错误,但同样,什么也没做。 感谢您对此的任何进一步帮助,我即将从这个头皮上的所有挠头中擦出一个洞。

SQL更新不起作用,不知道为什么

因为您在以下行中缺少@:-

updateCommand.Parameters.AddWithValue("@Order", "1");

参数应与查询完全匹配。另外,请阅读这篇关于"我们可以停止使用AddWithValue"的博客。

此外,您应该使用 using 块进行编码,以自动释放昂贵的资源。像这样的东西:-

using(SqlConnection connection = new SqlConnection(strSQLConnectionString)
{
    using(SqlCommand updateCommand = new SqlCommand(strUpdateCommand, connection)
    {
        //Your code goes here.
    }
}