【发布时间】:2021-06-24 08:44:50
【问题描述】:
我正在尝试在一个查询中更新两列。基本上,我将一笔金额从一个账户转移到另一个账户,所以我需要更新两列的余额。
using (SQLiteCommand cmd = conn.CreateCommand())
{
try
{
// Adds customers details to the database
cmd.CommandText = "UPDATE account SET balance = balance + (CASE WHEN accid = @in THEN 1000 else - 1000 END)WHERE accid IN(@in, @out)";
cmd.Parameters.AddWithValue("in", cb_accidIn.SelectedItem);
cmd.Parameters.AddWithValue("out", cb_accidOut.SelectedItem);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这就是我目前所拥有的,但我收到“数据库已锁定错误”。
UPDATE account SET balance = balance + (CASE WHEN accid = 1 THEN 1000 else - 1000 END)
WHERE accid IN (1, 2)
这是我在数据库浏览器中尝试过的 SQLite 查询,它在那里运行良好。
【问题讨论】:
-
您的 sql 代码在语法上是正确的。确保数据库未被任何其他应用程序使用,例如数据库浏览器。或者您已关闭任何其他连接。
-
嘿,非常感谢关闭的数据库浏览器现在可以正常工作了,简直不敢相信就是这样哈哈