当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误

Posted

技术标签:

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

我想将日期记录插入 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,很好,你几分钟前就知道了 【参考方案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 它是关键字。

它应该可以解决您的问题

谢谢。 拉提娜。

【讨论】:

以上是关于当我尝试通过 C# 将日期插入 Access 数据库时出现“INSERT INTO 语句中的语法错误”错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过 C# 将日期插入 .accdb 但数据出错

如何在 Access 数据库中插入以毫秒为单位的日期时间?

尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错

如何将日期从 C# 存储到 MS-Access 以及如何检索它?

尝试使用 C# 将数据插入 MS Access 数据库,但插入命令不起作用

如何以某种格式将日期和时间插入 SQL Server 数据库? [复制]