【问题标题】:How do I make two updates using one SQLite query in a Windows Forms application?如何在 Windows 窗体应用程序中使用一个 SQLite 查询进行两次更新?
【发布时间】: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 代码在语法上是正确的。确保数据库未被任何其他应用程序使用,例如数据库浏览器。或者您已关闭任何其他连接。
  • 嘿,非常感谢关闭的数据库浏览器现在可以正常工作了,简直不敢相信就是这样哈哈

标签: c# .net winforms sqlite


【解决方案1】:

尝试改变你的参数:

 cmd.Parameters.AddWithValue("@in", (int)  cb_accidIn.SelectedValue);
 cmd.Parameters.AddWithValue("@out", (int) cb_accidOut.SelectedValue);

【讨论】:

  • 解释一下。例如,要点是什么?
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多