用ADO写access数据库时提示“INSERT INTO 语句的语法错误”

elei 2006-06-17 11:07:31
用ADO写access数据库时提示insert into 语法错误~
开发平台是 VB.net 2005

代码如下:
sentence = "Insert into USER values('" & CStr(txtUserName.Text) & "','" & CStr(txtUserId.Text) & "','" & CStr(txtUserAddr.Text) & "','" & CStr(txtUserJob.Text) & "');"
cmd.CommandText = sentence
cmd.CommandType = ADODB.CommandTypeEnum.adCmdText

debug的时候可以看到实际输入的语句是:Insert into USER values('2','2','2','2');
怎么会有语法错误呢~~! - -#
...全文
475 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿牛138588 2006-08-07
  • 打赏
  • 举报
回复
应该是值与字段不符吧,数字能自动转成字符,但字符值就不能自动转成数值了
sanjie88 2006-06-19
  • 打赏
  • 举报
回复
表这样,我菜着呢
bitpolar 2006-06-19
  • 打赏
  • 举报
回复
佩服菜鸟依旧啊
sanjie88 2006-06-19
  • 打赏
  • 举报
回复
我刚刚试过了,我在ACCESS2003里面新建了一个USER的表,有两个子段id,name,这两个子段都是text属性,我插入了这样一句SQL
insert into user (id,name) values('1','1') 这样是通过的,我又换了另外一句,
insert into user (id,name) values(1,1) 这样也是通过的。
说明和关键字没有关系,在SQL SERVER 里面确实要注意这个问题,但是在ACCESS里面不会,最起码在ACCESS2003里面不会
iegrhn 2006-06-19
  • 打赏
  • 举报
回复
USER 是关键字
重做放牛娃 2006-06-19
  • 打赏
  • 举报
回复
同意楼上的
sanjie88 2006-06-19
  • 打赏
  • 举报
回复
其实楼主只要自己试试,有些问题问别人不如自己动手
sanjie88 2006-06-19
  • 打赏
  • 举报
回复
楼主指定的是ACCESS,有很多东西和SQL不相同的,比方对日期型的字段等等
bitpolar 2006-06-19
  • 打赏
  • 举报
回复
偶是比较佩服菜鸟动手的精神
说实话偶说了这么多 仅仅在SQL里面试过插入全部不指明fileds
不过偶里面有个自动编号字段,没有显式指定会失败(或者关闭自动编号)
建议楼主把你的程序给大家一人一份
估计用不了10分钟解决问题
shuo_shu 2006-06-19
  • 打赏
  • 举报
回复
插入全部, 不需要指明fields。 楼主说的是对的。
不过对于严谨来说。 还是指定好。但是该问题的关键应该不是在这里。
为了要正确
建议楼主
类型匹配


Insert into [user] values(匹配类型),分号不要。调试的时候注意出错的时候这个sql是什么样子的。有可能你的字符里面含有单引号,你没有转义你的字符
加上方括, user是关键字, 这样更好。如果这样都还出错的话, 就只有god知道了。
fengyaner 2006-06-19
  • 打赏
  • 举报
回复
USER 是关键字
[user]
sanjie88 2006-06-19
  • 打赏
  • 举报
回复
;不影响的好象
oo渣渣oo 2006-06-19
  • 打赏
  • 举报
回复
sentence = "Insert into USER values('" & CStr(txtUserName.Text) & "','" & CStr(txtUserId.Text) & "','" & CStr(txtUserAddr.Text) & "','" & CStr(txtUserJob.Text) & "');"

你发现你在句子的最后加多了一个;么?
CBryan 2006-06-18
  • 打赏
  • 举报
回复
bitpolar() 正解!!
insert into user(filed1,field2,field3,field4) values('2','2','2','2')

补充一下,楼主sentence = "Insert into USER values('" & CStr(txtUserName.Text).....

缺了你要插入表的Filed,应该是

sentence = "Insert into USER (Filed1,Filed2...) values (.........)"
tigerhu76 2006-06-18
  • 打赏
  • 举报
回复
检查字段类型
bitpolar 2006-06-18
  • 打赏
  • 举报
回复
肯定是SQL语句有问题 在Access就不会调试通过
否则也不会提示 “INSERT INTO 语句的语法错误” 了
sanjie88 2006-06-18
  • 打赏
  • 举报
回复
sentence = "Insert into USER values('" & CStr(txtUserName.Text) & "','" & CStr(txtUserId.Text) & "','" & CStr(txtUserAddr.Text) & "','" & CStr(txtUserJob.Text) & "');"
cmd.CommandText = sentence
============================================
txtUserId.Text对应你表里的是不是一个数字型的?如果是的话就要改成
sentence = "Insert into USER values('" & CStr(txtUserName.Text) & "'," & CStr(txtUserId.Text) & ",'" & CStr(txtUserAddr.Text) & "','" & CStr(txtUserJob.Text) & "');"
这个只是我的猜测,如果你这句SQL语句在ACCESS里面调试通过的话,那么就肯定是别的问题了,就目前看来我觉得是表的字段属性没有匹配好
elei 2006-06-17
  • 打赏
  • 举报
回复
能不能说明白点~~
water335 2006-06-17
  • 打赏
  • 举报
回复
[user]看看
elei 2006-06-17
  • 打赏
  • 举报
回复
user是关键字的话编译器会提示出错的吧~~

我插入的user表的所有字段,不用加field啊~
加的也试过还是一样出错~~ - -
加载更多回复(2)

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧