MS Access INSERT INTO语句

时间:2009-11-23 14:34:29

标签: ms-access

我需要将表单数据从我的VB.NET应用程序插入Microsoft Access数据库。

使用以下语法时收到错误"Syntax error in INSERT INTO statement"

INSERT INTO bs1 (teacher, subject, date, period)
VALUES ('test', 'test', 'test', 'test')

我承认我已经习惯了MySQL类型的语法,对此问题的任何帮助都将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:11)

我相信date是一个保留字。您需要将保留字段名称封装在方括号中:

INSERT INTO bs1 (teacher, subject, [date], period) VALUES ('test', 'test', 'test', 'test')

编辑:有关Access 2002及更高版本中保留字的完整列表,请参阅以下文章: http://support.microsoft.com/kb/286335

〜的md5sum〜

答案 1 :(得分:5)

在Access中,插入日期字段的文字值的分隔符为#,文本字段为'",数字字段值没有分隔符,表示:< / p>

INSERT INTO bs1 (teacher, subject, [date], period) 
VALUES ('test', 'test', #2009-12-31#, 0)

答案 2 :(得分:3)

在Access数据库引擎SQL代码中,当您需要指定文字值类型为DATETIME时,您可以将值显式转换为DATETIME或使用#个字符划定价值。

使用CDATE()函数进行显式强制转换:

INSERT INTO bs1 (teacher, subject, [date], period) 
   VALUES ('test', 'test', CDATE('2009-12-31 00:00:00'), 0);

使用DATETIME字面值:

INSERT INTO bs1 (teacher, subject, [date], period) 
   VALUES ('test', 'test', #2009-12-31 00:00:00#), 0);

当{{1}将值放入INSERT类型的列中时,如果未指定显式DATETIME值,则引擎将隐式尝试将值强制转换为{{1} }}。文字值'test'无法强制键入DATETIME,这似乎是语法错误的来源。

注意:以上都不适用于DATETIME值。在Access Database Engine SQL中,无法将DATETIME值转换为显式类型,例如

NULL

生成错误“无效使用NULL”。因此,要指定NULL SELECT CDATE(NULL) 字面值,只需使用NULL关键字。

值得注意的是,Access数据库引擎只有一种时态数据类型,DATETIME(其同义词为NULLDATETIMEDATE和{{ 1}})。即使您没有明确指定时间元素,结果值仍将具有时间元素,尽管是隐式元素。因此,最好始终明确,并且在使用TIME文字值时始终包含时间元素。