编辑 仍然收到类型不匹配错误,但在评论的帮助下更新了代码 更新的代码如下所示
我是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。如果你能解决我的问题,请告诉我。此外,我打算在网站上插入三个以上的数据 - 有没有比通过手动为每个列创建参数更好的方法?
答案 0 :(得分:1)
CreateParameter
方法的文档声明:
如果在 Type 参数中指定可变长度数据类型,则为 必须传递 Size 参数或设置的大小属性 将参数对象附加到参数集合之前; 否则会发生错误。
129
对应adChar
,这是一个可变长度的数据类型,因此需要您传递Size
参数。通常,您应该使用数据库中列的已定义长度,但我发现只使用我传递的值的长度也可以。