参数对象定义不正确。提供的信息不一致或不完整

时间:2015-07-15 20:28:53

标签: vbscript asp-classic

我正在开发一个经典的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.

我在代码中找不到任何错误。

1 个答案:

答案 0 :(得分:1)

我怀疑你没有定义常量adIntegeradParamInput

证据:

>> 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来捕获此类错误 - 它们只是空。