我需要将表单数据从我的VB.NET应用程序插入Microsoft Access数据库.
"Syntax error in INSERT INTO statement"使用以下语法时出现错误:
INSERT INTO bs1 (teacher, subject, date, period)
VALUES ('test', 'test', 'test', 'test')
Run Code Online (Sandbox Code Playgroud)
我承认我习惯了MySQL类型的语法,对此问题的任何帮助都将不胜感激,谢谢.
Nat*_*ler 11
我相信这date是一个保守的词.您需要将保留字段名称封装在方括号中:
INSERT INTO bs1 (teacher, subject, [date], period) VALUES ('test', 'test', 'test', 'test')
编辑:有关Access 2002及更高版本中保留字的完整列表,请参阅以下文章:http: //support.microsoft.com/kb/286335
〜〜的md5sum
在Access中,插入日期字段的文字值的分隔符是#,对于文本字段是'或"和数字字段值没有分隔符,这表明:
INSERT INTO bs1 (teacher, subject, [date], period)
VALUES ('test', 'test', #2009-12-31#, 0)
Run Code Online (Sandbox Code Playgroud)
在 Access 数据库引擎 SQL 代码中,当需要指定文字值的类型为 时DATETIME,可以显式将该值转换为DATETIME或使用#字符来分隔该值。
使用函数进行显式转换CDATE():
INSERT INTO bs1 (teacher, subject, [date], period)
VALUES ('test', 'test', CDATE('2009-12-31 00:00:00'), 0);
Run Code Online (Sandbox Code Playgroud)
使用DATETIME文字值:
INSERT INTO bs1 (teacher, subject, [date], period)
VALUES ('test', 'test', #2009-12-31 00:00:00#, 0);
Run Code Online (Sandbox Code Playgroud)
INSERT将值传入 类型的列时DATETIME,如果未指定显式DATETIME值,引擎将隐式尝试将值强制为DATETIME。无法强制输入文字值“test” DATETIME,这似乎是语法错误的根源。
注意:以上内容均不适用于该NULL值。在 Access Database Engine SQL 中,无法将NULL值转换为显式类型,例如
SELECT CDATE(NULL)
Run Code Online (Sandbox Code Playgroud)
生成错误“无效使用 NULL”。因此,要指定NULL DATETIME文字,只需使用NULL关键字即可。
值得记住的是,Access 数据库引擎只有一种时态数据类型,即DATETIME(其同义词为DATE、TIME、DATETIME和TIMESTAMP)。即使您没有显式指定时间元素,结果值仍将具有时间元素,尽管是隐式的。DATETIME因此,在使用文字值时最好始终明确并始终包含时间元素。