SQL UPDATE语句不起作用

本文关键字:不起作用 语句 UPDATE SQL | 更新日期: 2023-09-27 18:12:27

我正在调用一个静态函数来替换.accdb文件中的值;以查找oldOA的值,然后将其替换为newOA。

    public static bool updateOA(string oldOA, string newOA)
    {
        ...
        command.Parameters.AddWithValue("@oldOA", oldOA);
        command.Parameters.AddWithValue("@newOA", newOA);
        command.CommandText = "SELECT [OA_ID] FROM [Operating_Authority_Table] WHERE [OA_Name] = [@oldOA]";
        long value = long.Parse(command.ExecuteScalar().ToString());
        command.Parameters.AddWithValue("@OA_ID", value);
        command.CommandText = "UPDATE [Operating_Authority_Table] SET [OA_Name] = [@newOA] WHERE [OA_ID] = " + value;
        try
        {
            command.ExecuteNonQuery();
            message.show(1, "", "true");
            
            return true;
        }
        catch
        {
            message.show(1, "", "false");
            return false;
        }
    }

最初我只是简单地使用:

    command.CommandText = "UPDATE [OA_Table] SET [OA_Name] = [@newOA] WHERE [OA_Name] = [@oldOA]";

但有人告诉我,我应该得到OA_ID,也就是PK,并从那里更新它,这就产生了上面的代码,但尽管函数仍然返回true,但数据库中的值仍然没有更新。。

编辑

command.CommandText = "UPDATE [Operating_Authority_Table] SET [OA_Name] = @newOA WHERE [OA_Name] = @oldOA";

我已经更新了这个语句,尽管它仍然返回true,但值不会更新。我有语法错误吗?

SQL UPDATE语句不起作用

update Operating_Authority_Table set OA_Name = @newOA where OA_ID = (select OA_ID from Operating_Authority_Table where OA_Name = @oldOA) 

我猜这可以解决你的问题

当您从参数中移除方括号时会发生什么?

也许还包括您的value作为参数?

UPDATE [Operating_Authority_Table] 
SET [OA_Name] = @newOA 
WHERE [OA_ID] = @myValue;
command.Parameters.AddWithValue("@newOA", newOA);
command.Parameters.AddWithValue("@myValue", value);