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

前端之家收集整理的这篇文章主要介绍了从经典ASP中的函数返回记录集前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对如何从经典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.错误.

用Response.Write Count.Status替换它我在对象关闭时不允许操作.错误.

添加Count.Open会给出连接不能用于执行此操作.在此上下文中它是关闭的或无效的.错误.

马克B回答后编辑:

我已经查看了断开连接的记录集,但我不知道如何在我的示例中使用它们:每个教程都使用Recordset.Open直接将查询提供给记录集,但我使用的是参数化查询,甚至尝试了很多方法我无法当路上有ADODB.Command时,获得相同的结果.

我该怎么办?

提前致谢.

以下是基于Eduardo Molteni答案的解决方案:

数据库交互的函数

Function Test

    Dim Connection,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,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
原文链接:https://www.f2er.com/aspnet/251667.html

猜你在找的asp.Net相关文章