gpt4 book ai didi

vbscript - 如何使用VBScript将参数与ADO中的Command对象关联?

转载 作者:行者123 更新时间:2023-12-04 15:19:39 24 4
gpt4 key购买 nike

我一直在使用ADO VBScript,它需要接受参数并将那些参数合并到通过数据库传递的查询字符串中。当记录集对象尝试打开时,我不断收到错误消息。如果我通过不带参数的查询,则记录集将打开,并且可以处理数据。当我通过调试器运行脚本时,命令对象未显示参数对象的值。在我看来,我似乎缺少一些与Command对象和Parameter对象相关联的东西,但是我不知道是什么。这是一些VBScript代码:

...
'Open Text file to collect SQL query string'
Set fso = CreateObject("Scripting.FileSystemObject")
fileName = "C:\SQLFUN\Limits_ADO.sql"
Set tso = fso.OpenTextFile(fileName, FORREADING)

SQL = tso.ReadAll

'Create ADO instance'
connString = "DRIVER={SQL Server};SERVER=myserver;UID=MyName;PWD=notapassword; Database=favoriteDB"
Set connection = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")

connection.Open connString
cmd.ActiveConnection = connection
cmd.CommandText = SQL
cmd.CommandType = adCmdText

Set paramTotals = cmd.CreateParameter
With paramTotals
.value = "tot%"
.Name = "Param1"
End With

'The error occurs on the next line'
Set recordset = cmd.Execute

If recordset.EOF then
WScript.Echo "No Data Returned"
Else
Do Until recordset.EOF
WScript.Echo recordset.Fields.Item(0) ' & vbTab & recordset.Fields.Item(1)
recordset.MoveNext
Loop
End If

我使用的SQL字符串是相当标准的,除了我想向其传递参数。它是这样的:
SELECT column1
FROM table1
WHERE column1 IS LIKE ?

我了解ADO应该替换“?”我在脚本中分配的参数值。我看到的问题是Parameter对象显示正确的值,但是根据我的调试器,命令对象的parameter字段为null。

最佳答案

我知道这很老了,但是对于仍然喜欢这个的人(就像我通过谷歌所做的那样):

如果您使用存储过程:

set cmd = Server.CreateObject("ADODB.Command")
with cmd
.ActiveConnection = db_connection
.CommandText = "stored_procedure_name"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("@Parameter1",adInteger,adParamInput,,1)
.Parameters.Append .CreateParameter("@Parameter2",adVarChar,adParamInput,100,"Up to 100 chars")
.Parameters.Append .CreateParameter("@Parameter3",adBoolean,adParamInput,,true)
.Parameters.Append .CreateParameter("@Parameter4",adDBTimeStamp,adParamInput,,now())
end with
set rs = cmd.execute
'do stuff with returned results from select or leave blank if insert/delete/etc stored procedure
set rs = nothing
set cmd = nothing

如果没有,我相信您将.CommandText更改为带有问号的SQL语句,并且您的Parameters必须遵循相同的顺序。

参见 http://www.devguru.com/technologies/ado/quickref/command_createparameter.html
要详细了解您通过CreateParameter传递的值,以及类型及其描述的列表。

关于vbscript - 如何使用VBScript将参数与ADO中的Command对象关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2557606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com