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,但值不会更新。我有语法错误吗?
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);