我正在开发一个经典的ASP Web应用程序我需要插入100条记录(记录的数量可能会根据特定的用户选择而改变)。为此我使用参数化查询和预处理语句我的代码如下:
Set objComm2=Server.CreateObject("ADODB.Command")
objComm2.ActiveConnection=stConnect
objComm2.Prepared=true
objComm2.CommanText="insert into trader(RegistrationID,SalesID) values (?,?)"
objComm2.Parameters.Append objComm2.CreateParameter("@RegistrationID", adInteger, adParamInput)
objComm2.Parameters.Append objComm2.CreateParameter("@SalesID", adInteger, adParamInput)
while NOT objSel.EOF
objComm2("RegistrationID") = Session("RegistrationID")
objComm2("SalesID") = objSel("SalesInventoryID")
objComm2.Execute
objSel.MoveNext
wend
此处stConnect
包含在我的项目Web配置文件中定义的连接变量,objSel
(它的记录集对象)包含要为插入操作提供的必需数据。
现在我的问题是当我运行此代码时,我在向命令对象附加参数时收到以下错误:
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
我在代码中找不到任何错误。
答案 0 :(得分:1)
我怀疑你没有定义常量adInteger
和adParamInput
。
证据:
>> Set oCmd = CreateObject("ADODB.Command")
>> oCmd.CreateParameter "@RegistrationID", adInteger, adParamInput
>>
Error Number: 3001
Error Description: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one
another.
但:
>> Const adInteger = 3
>> Const adParamInput = 1
>> Set oCmd = CreateObject("ADODB.Command")
>> oCmd.CreateParameter "@RegistrationID", adInteger, adParamInput
>>
>> <-- no news are good news.
更新评论:
VBScript对ad *,xl *或wd *常量一无所知。如果您不包含adovbs.inc等文件或自行定义(Const adInteger = 3
,...) - 并且不使用Option Explicit
来捕获此类错误 - 它们只是空。