当我尝试通过 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 语句中的语法错误”错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错
如何将日期从 C# 存储到 MS-Access 以及如何检索它?