我正在研究一个小的ap,每次使用它时都会使用vbscript写入ms访问数据库(真的只供个人使用,所以我不需要担心sql注入)。当我运行它时,我一直在INSERT INTO语句中出现“语法错误”。连接字符串是正确的,因为db在运行时会锁定。表名是ors。我做错了什么?
sql1="INSERT INTO ors VALUES (,,'B223234','12/22/08')"
constring="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\Documents and Settings\me\My Documents\tracker.mdb;
User Id=admin;Password=;"
set con=createobject("adodb.connection")
con.open constring
con.execute sql1
con.close
答案 0 :(得分:3)
如果我没记错的话,我认为MS Access中的日期需要#围绕它们而不是单引号。尝试将插入更改为
INSERT INTO ors VALUES (,,'B223234',#12/22/08#)
此外,您可能必须为缺少的参数指定空白
INSERT INTO ors VALUES (NULL,NULL,'B223234',#12/22/08#)
我的MS Access知识有点生疏但是给了它一个镜头。
答案 1 :(得分:3)
“空白”值需要NULL。您还需要使用#周围的日期而不是日期字段的单引号。
如果您不想指定所有值,则只能指定要设置的字段。
(假设日期字段,而不是日期值的文本)
此:
INSERT INTO ors VALUES (NULL,NULL,'B223234',#12/22/08#)
或者这个:
INSERT INTO ors (Field3, Field4) VALUES ('B223234',#12/22/08#)
答案 2 :(得分:1)
INSERT INTO(field1,fiedl2)VALUES('B223234',#12/22/08#)
或
INSERT INTO VALIES(NULL,NULL,'B223234',#12/22/08#)
可能会工作..
答案 3 :(得分:1)
另请注意,日期字段必须采用mm / dd / yy格式或其他明确格式,例如mm / dd / yyyy,yyyy / mm / dd或yyyy-mm-dd。如果有人以dd / mm / yy或yy / mm / dd运行系统,则会导致插入错误的日期。
有关在Access中运行的解决方案,请参阅http://mvps.org/access/datetime/date0005.htm。
我知道您声明这仅供个人使用,但您应该了解未来的这些细节。
答案 4 :(得分:0)
您需要指定要插入的字段:
示例:插入表1(test1,test2,test3)值('1','2','3')