SQL Update无法正常工作,不确定原因

时间:2014-12-11 03:00:09

标签: c# sql-update

我有以下代码,不会更新记录。有问题的数据显示在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结束。 再次感谢您对此的任何帮助。 埃里克

EDIT @Rahul Singh感谢您的回复以及博客的链接。您添加缺少的“@”时建议的更改无法解决问题。相反,我现在得到的是执行查询行上的“连接未打开,连接必须打开”异常。我接受了关于使用块的建议(谢谢!),修改后的代码是

                    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();'然后我没有得到这个错误,但是,再一次,没有做任何事情。感谢您对此有任何进一步的帮助,我即将在我的头皮上擦一个洞,因为这个头上的所有头部都在刮擦。

1 个答案:

答案 0 :(得分:2)

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

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

参数应与查询完全匹配。另外,请在#34上阅读此blog;我们可以停止使用AddWithValue"。

此外,您应该使用using块进行编码,以自动处理昂贵的资源。这样的事情: -

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