我正在尝试使用ASP classic中的参数化查询将日期保存到SQL表。
该字段设置为输入日期,我尝试了类似
的内容Set sqlParameters(0)=cmdCreateParameterObj.CreateParameter("@DocDate", adDbDate, adParamInput, , "20160928")
我得到的错误是
应用程序使用错误类型的值进行当前操作。
我已尝试将adDbDate更改为其他内容但到目前为止没有运气。
有什么想法吗?
编辑 - 这是我调用的函数,它附加了存储在数组中的所有参数:
Function executeSQL(sqlQuery, allParameters)
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = DB
cmd.CommandText = sqlQuery
cmd.CommandType = adCmdText
cmd.NamedParameters = true
cmd.Prepared = true
For p=0 To UBOUND(AllParameters)
cmd.Parameters.Append AllParameters(p)
Next
Set TBL=cmd.Execute()
Set cmd=Nothing
End Function
答案 0 :(得分:0)
在Parameter
上定义ADODB.Command
的语法不理想(说OP has since confirmed他们将参数传递给另一个函数,所以这种方法很好)
相反尝试一下;
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
'Set CommandType, ActiveConnection etc.
'...
'Adding parameters
Call .Parameters.Append(.CreateParameter("@DocDate", adDBTimeStamp, adParamInput, 8, "2016-09-28"))
'...
'Execute and return results
End With
'...
'After use release memory
Set cmd = Nothing
...
- 表示使ADODB.Command
对象有效的其他必需代码,因为问题在细节上非常有限,此信息留待锻炼OP(在SO上有足够的资源来展示如何做到这一点)。
还将名为constant的数据类型更改为adDBTimeStamp
(135),因为大多数RDBMS都使用adDBDate
(133)。
ADODB.Command
参数化查询非常有用)。