1

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

我是 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。如果您有解决我的问题的方法,请告诉我。另外,我打算在网站上插入三个以上的数据 - 有没有比手动为每列设置参数更好的方法?

4

1 回答 1

1

CreateParameter方法的文档指出:

如果在Type参数中指定可变长度数据类型,则必须先传递Size参数或设置 Parameter对象的 Size 属性,然后再将其附加到Parameters集合;否则,会发生错误。

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

于 2013-07-11T02:52:02.617 回答