我正在尝试更新一个经典的 ASP 应用程序,并且作为更新的一部分,我尝试使用带有参数化查询的字符串连接替换动态 SQL。
问题是参数不接受超过 210 个字符的值。
我收到以下错误...
ADODB.Parameter 错误“800a0d5d”
应用程序为当前操作使用了错误类型的值。
/admin/Save_product_subcategories.asp,第 30 行
我的第一次尝试看起来像这样......
SQLString = "UPDATE Product_SubCategories
SET SubCategory=?, Description=?
WHERE SubCategoryID=?"
Set courseCommand = Server.CreateObject("ADODB.Command")
courseCommand.ActiveConnection = objConn
courseCommand.CommandText = SQLString
courseCommand.Parameters(0).value = cleanCategory
courseCommand.Parameters(1).Value = cleanDescription
courseCommand.Parameters(2).value = cleanSubCategoryId
我试过手动设置参数类型并增加参数的大小......
courseCommand.Parameters(1).Type = 203
courseCommand.Parameters(1).Size = 300
courseCommand.Parameters(1).Type = adLongVarWChar
我也尝试使用 command.CreateParameter 方法创建参数,但这会产生相同的错误。
param = courseCommand.CreateParameter(,,,,cleanDescription)
'or
param = courseCommand.CreateParameter(,adLongVarWChar,,,cleanDescription)
'or
param = courseCommand.CreateParameter(,adLongVarWChar,,300,cleanDescription)
courseCommand.Parameters(1) = param
我开始认为我唯一的选择是回到动态 sql。
编辑:
我尝试附加参数,而不是使用数组索引将其添加到集合中,但此后没有任何参数起作用。
提供程序错误“80020005”
类型不匹配。
/admin/Save_product_subcategories.asp,第 31 行