在经典的asp中使用vbscript插入参数化查询时出现类型错误

时间:2013-07-11 02:13:28

标签: sql asp-classic vbscript parameterized-query

编辑 仍然收到类型不匹配错误,但在评论的帮助下更新了代码 更新的代码如下所示

我是ASP和VBScript的新手。我试图将后期数据插入SQL数据库,但是,我想确保查询已消毒,所以我试图使用参数化查询。当我执行查询时,我收到此错误。

Microsoft VBScript runtime error '800a000d'

Type mismatch

我的代码看起来像这样

Set conn = Server.CreateObject("ADODB.Connection")
conn.Mode = 3
conn.open "Provider=SQLOLEDB;Data Source=xxx.xxx.xxx.xxx,xxxx;
database=db_example;uid=user;pwd=password;"

Dim oCmd 
set oCmd= Server.CreateObject("ADODB.Command") 

Dim sSQL 
sSQL = "INSERT INTO tbl_Application (Expenses, Name, Why) VALUES (?, ?, ?);"
oCmd.CommandText = sSQL
oCmd.ActiveConnection= conn

Dim uPar 
uPar = oCmd.CreateParameter("Expenses",200,1,255,session("Expenses")) 
oCmd.Parameters.Append(uPar)

Dim vPar 
vPar = oCmd.CreateParameter("Name",200,1,255,session("Name")) 
oCmd.Parameters.Append(vPar)

Dim wPar 
wPar = oCmd.CreateParameter("Why",200,1,255,session("Why")) 
oCmd.Parameters.Append(wPar)

Dim oRS 
oRS = oCmd.Execute()

我尝试将数据键入为varchar和char。如果你能解决我的问题,请告诉我。此外,我打算在网站上插入三个以上的数据 - 有没有比通过手动为每个列创建参数更好的方法?

1 个答案:

答案 0 :(得分:1)

CreateParameter方法的文档声明:

  

如果在 Type 参数中指定可变长度数据类型,则为   必须传递 Size 参数或设置的大小属性   将参数对象附加到参数集合之前;   否则会发生错误。

129对应adChar,这是一个可变长度的数据类型,因此需要您传递Size参数。通常,您应该使用数据库中列的已定义长度,但我发现只使用我传递的值的长度也可以。