【问题标题】:Decrement value by 1 MS Access SQL and C# [duplicate]将值递减 1 MS Access SQL 和 C# [重复]
【发布时间】:2018-11-13 17:00:58
【问题描述】:

我遇到了一个使用 MS Access 数据库递减值的问题。

我收到一个错误

UPDATE 语句中的语法错误

我的代码:

connection.Open();
command = new OleDbCommand();
command.Connection = connection;
command.CommandText = " update Cards set Count = Count - 1 where Type=" + ct + " ";
command.ExecuteNonQuery();
connection.Close();

有人可以帮忙吗?

【问题讨论】:

  • Type 数据类型是什么?
  • 使用参数来避免sql注入并解决您的问题。
  • 类型是文本
  • 参数没有解决我试过的问题
  • @themehio 停止它。参数是修复此错误的唯一“安全方法”。如果你在求职面试中提交这样的代码,你就不会得到这份工作。

标签: c# sql ms-access


【解决方案1】:

您应该提供一个实际错误。 我的猜测是 count 是一个关键字,必须像这样放在方括号中 [count] 并使用参数,请参阅 Joel 的回答

【讨论】:

    【解决方案2】:

    不确定,但我强烈怀疑ct 周围缺少单引号。像这样修复它:

    using (var connection = new OleDbConnection("connection string here"))
    using (var command = new OleDbCommand("update Cards set Count = Count - 1 where Type= ?", connection))
    {
        //have to guess at the OleDbType value. Use the actual column type and length from the database
        cmd.Parameters.Add("?", OleDbType.VarWChar, 10).Value = ct;
        connection.Open();
        command.ExecuteNonQuery();
    }
    

    此模式中还有其他几个重要的修复。

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      相关资源
      最近更新 更多