Sql server 插入到执行VBA中

Sql server 插入到执行VBA中,sql-server,ms-access,vba,Sql Server,Ms Access,Vba,我希望执行此SQL语句。但使用CurrentDb.Execute我得到了错误3061(参数太少了,应该是9)。变量中给出的值是合法的 这是我的桌子: 这是我的访问表: 这是我的代码: updStr=“插入电影(电影id、标题、持续时间、描述、出版年份、封面、前一部分、价格、URL)”&_ “值(movie_id=“&Me.TxtMovId&”,title='”&Me.TxtTitle&',“&”_ “duration=“&Me.TxtDur&”,description=”&Me.TxtDes

我希望执行此SQL语句。但使用
CurrentDb.Execute
我得到了错误3061(参数太少了,应该是9)。变量中给出的值是合法的

这是我的桌子:

这是我的访问表:

这是我的代码:

updStr=“插入电影(电影id、标题、持续时间、描述、出版年份、封面、前一部分、价格、URL)”&_
“值(movie_id=“&Me.TxtMovId&”,title='”&Me.TxtTitle&',“&”_
“duration=“&Me.TxtDur&”,description=”&Me.TxtDescr&“,”和_
“发布年份=“&Me.TxtPubl&”,封面图片=“&Me.txtpimage&”,“&”_
“上一部分=“&Me.txtprov&”,price=“&Me.TxtPrice&”,URL=”&Me.txtrl&“)”
CurrentDb.Execute(updStr)

DoCmd.RunSQL
确实执行字符串,但它没有效果,这就是使用
CurrentDb.execute

@Hansup的注释解释了这个问题:不要在Access
INSERT
VALUES
子句中包含字段名

另外,我在Stack Overflow上学到了一些东西,我想与大家分享的是,如果你的代码中有一个查询,你应该使用参数化查询来帮助防止有人无意中弄乱了你的数据库,或者有人试图通过在文本字段中插入命令来删除你的表。这里有一个堆栈溢出链接

下面是一个使用几个字段的简单示例:

Dim db作为DAO.Database
将qdf设置为DAO.QueryDef
暗斯特林塞特
strInsert=“插入电影(电影id、标题、持续时间)”&vbCrLf&_
值(pMovie_id、pTile、pDuration)
Set db=CurrentDb
设置qdf=db.CreateQueryDef(vbNullString,strInsert)
qdf.参数(“pMovie_id”).Value=Me.TxtMovId.Value
qdf.Parameters(“pTitle”).Value=Me.txtitle.Value
qdf.参数(“pDuration”).Value=Me.TxtDur.Value
qdf.executedbfailonerror

此处可能涉及多个问题,但请先查看此问题。良好的访问语法:
插入电影(电影id)值(27)错误访问语法:
插入电影(电影id)值(电影id=27)排序后,考虑参数查询。我对他的答案投了赞成票,但我还不知道如何将他的答案标记为问题。谢谢你提醒我这一点。我会设法解决的,我没想过!谢谢