我对如何从经典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 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.
错误。
编辑马克·B的应答后:
我已经看了断开连接的记录,但我不知道怎么在我的例子中使用它们:每个教程喂查询直接与Recordset.Open
记录,但我使用参数化查询,甚至尝试很多方法,我无法获得相同的结果,当有一个ADODB.Command
的方式。
我该怎么办?
在此先感谢。
下面是根据爱德华的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
你的代码最终块丢失'Response.CodePage = 65001'功能。 – AnthonyWJones 2010-10-01 15:28:59