在 VBScript 中使用 ADO 中的事务和参数
我对 ADO、VBScript 和 Access 中的参数和事务有点困惑。基本上,我正在经历一个巨大的循环并将结果写入数据库,因此我需要将其包装在事务中,否则需要很长时间。
我编写了以下脚本,该脚本适用于单个参数(尽管这似乎有点长,所以如果有人知道更短的方法,请大喊)。但是,我无法弄清楚如何将其扩展为两个参数:
objConn.BeginTrans
set oParm = CreateObject("ADODB.Parameter")
oParm.Value = ""
oParm.Type = 200
oParm.Direction = 1
oParm.Size = 100
Set oCmd = CreateObject("ADODB.Command")
oCmd.ActiveConnection = objConn
oCmd.commandText = "INSERT INTO table (field) VALUES (?)"
oCmd.commandType = 1
oCmd.Parameters.Append oParm
'Big loop here that goes through lots of lines.
oCmd.Execute ,"Field",1
'Loop
objConn.CommitTrans
例如,如果我想将其扩展为:
oCmd.commandText = "INSERT INTO table (field1, field2) VALUES (?,?)"
我无法弄清楚我如何处理我的参数。我确信我只是在这里很愚蠢,并没有完全理解它们是如何工作的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我从未尝试过通过 Execute 方法传递参数值,所以我不能完全说出问题所在。我要说的是 文档 指出第二个参数应该是值的数组,所以如果您尝试
Array("Field1Val", "Field2Val")
,也许会起作用。我通常做的是给每个参数一个名称,然后您可以在循环中引用它来更改其值。您可以使用任何您喜欢的名称,只要每个参数都有唯一的名称即可。举个例子:
就缩短代码而言,我唯一可以提出的建议是使用
CreateParameter
方法来创建参数。这将允许您在一行上设置所有相关属性。I've never tried passing parameter values through the
Execute
method, so I can't quite say what's wrong. I will say that the documentation states that the second argument should be an array of values, so maybe if you triedArray("Field1Val", "Field2Val")
, that would work.What I usually do is give each parameter a name, then you can reference it within your loop to change its value. You can use any name you like, as long each parameter has a unique name. As an example:
As far as shortening the code, the only suggestion I can make is using the
CreateParameter
method to, well, create the parameter. That will allow you to set all the relevant properties on one line.