gpt4 book ai didi

function - 从经典 ASP 中的函数返回记录集

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

我不知道如何从经典 ASP 中的函数返回可读记录集。

这是我想出的,但它不起作用:

Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"

Dim Count

Set Count = Test

Response.Write Count.Fields(0).Value


Function Test

Dim Query, Connection, Command, Recordset

Query = " blah blah blah "

Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set Recordset = Server.CreateObject("ADODB.Recordset")

Connection.ConnectionString = "blah blah blah"
Connection.Open

Set Command.ActiveConnection = Connection
Command.CommandText = Query

Set Recordset = Command.Execute

Set Test = Recordset

Recordset.Close
Connection.Close

Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing

End Function
Response.Write Count.Fields(0).Value行产生 Item cannot be found in the collection corresponding to the requested name or ordinal.错误。

将其替换为 Response.Write Count.Status我收到了 Operation is not allowed when the object is closed.错误。

添加 Count.Open给出 The connection cannot be used to perform this operation. It is either closed or invalid in this context.错误。

在 Mark B 的回答后编辑:

我已经查看了断开连接的记录集,但我不知道如何在我的示例中使用它们:每个教程都使用 Recordset.Open 将查询直接输入到记录集中。 ,但我正在使用参数化查询,甚至尝试了多种方法,但在出现 ADODB.Command 时也无法获得相同的结果。途中。

我该怎么办?

提前致谢。

这是基于 Eduardo Molteni 的回答的解决方案:

与数据库交互的函数:
Function Test

Dim Connection, Command, Recordset

Set Connection = Server.CreateObject("ADODB.Connection")
Set Command = Server.CreateObject("ADODB.Command")
Set Recordset = Server.CreateObject("ADODB.Recordset")

Connection.ConnectionString = "blah blah blah"
Connection.Open

Command.ActiveConnection = Connection
Command.CommandText = "blah blah blah"

Recordset.CursorLocation = adUseClient
Recordset.Open Command, , adOpenForwardOnly, adLockReadOnly

Set Recordset.ActiveConnection = Nothing

Set Test = Recordset

Connection.Close

Set Recordset = Nothing
Set Command = Nothing
Set Connection = Nothing

End Function

调用函数的代码:
Response.Clear
Response.CharSet = "utf-8"
Response.ContentType = "text/plain"

Dim Recordset

Set Recordset = Test

Response.Write Recordset.Fields(0).Value

Recordset.Close

Set Recordset = Nothing

最佳答案

这是一个返回断开连接的记录集的函数

Function RunSQLReturnRS(sqlstmt, params())
On Error Resume next

''//Create the ADO objects
Dim rs , cmd
Set rs = server.createobject("ADODB.Recordset")
Set cmd = server.createobject("ADODB.Command")

''//Init the ADO objects & the stored proc parameters
cmd.ActiveConnection = GetConnectionString()
cmd.CommandText = sqlstmt
cmd.CommandType = adCmdText
cmd.CommandTimeout = 900

''// propietary function that put params in the cmd
collectParams cmd, params

''//Execute the query for readonly
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenForwardOnly, adLockReadOnly
If err.number > 0 then
BuildErrorMessage()
exit function
end if

''// Disconnect the recordset
Set cmd.ActiveConnection = Nothing
Set cmd = Nothing
Set rs.ActiveConnection = Nothing

''// Return the resultant recordset
Set RunSQLReturnRS = rs

End Function

关于function - 从经典 ASP 中的函数返回记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3837902/

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