【问题标题】:"Syntax error in INSERT INTO statement" error when I try to insert date to Access database by C#当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误
【发布时间】:2026-02-08 20:55:02
【问题描述】:

我想将日期记录插入 Access 数据库。这是我的代码:

cmd.CommandText = "INSERT INTO AlarmHistory(Date) VALUES ('6/8/2012')"; 
cmd.ExecuteNonQuery(); 

它在第二行给出Syntax error in INSERT INTO statement. 错误。

在 db 上显示我的单元格数据类型的屏幕截图如下。

【问题讨论】:

  • 我搜索了很多,尝试了很多东西:*.com/questions/10353541/…*.com/questions/7522924/…*.com/questions/6449284/…*.com/questions/9527958/…我不知道这个过程为什么这么难!
  • 尝试用方括号括起来 Date - 这是一个关键字!因此,您的声明将是 INSERT INTO AlarmHistory ([Date]) VALUES (#6/8/2012#)
  • 终于成功了!谢谢@dash。所以问题出在列名(日期),而不是值
  • 是的!数据库引擎可以更好地告诉人们这一点。它会导致各种混乱。不过,我也会接受@Steve 的建议。参数化查询是一种很好的做法,可以提高许多数据库系统的性能。
  • @dash,很好,你几分钟前就知道了

标签: c# datetime insert


【解决方案1】:

使用参数

cmd.CommandText = "INSERT INTO AlarmHistory([Date]) VALUES (?)";  
cmd.Parameters.AddWithValue("@date", new DateTime(2012,06,8));
cmd.ExecuteNonQuery();

这将保护您的代码免受 SqlInjection 的影响,您不必担心引用您的值-

刚刚尝试创建一个虚拟数据库。这是日期字段。您应该用方括号括起来,因为Date 是保留关键字

Here the list Jet 4.0 的保留关键字

【讨论】:

  • 看起来不错,但它给出了同样的错误。我的访问设置正常吗?
【解决方案2】:

也许date 是一个保留字。如果是这样,它应该被分隔(可能用括号):

INSERT INTO AlarmHistory([Date]) VALUES ('6/8/2012')

【讨论】:

    【解决方案3】:

    尝试使用

    "INSERT INTO AlarmHistory(Date) VALUES ('#6/8/2012#')"

    【讨论】:

      【解决方案4】:

      您应该在应该解决您的问题的日期周围添加一个#号。

      【讨论】:

        【解决方案5】:

        请记住在创建数据库表之前避免给字段名称 DATE 和 NAME

        插入时会报错。例如..给出字段密码,日期而不是那样给出,密码用户,账单日期

        注意:MS Access 表中的日期和密码不可接受的字段名称。bcoz 它是关键字。

        它应该可以解决您的问题

        谢谢。 拉提娜。

        【讨论】: