0

データベースへのすべての接続を処理する基本的な asp クラシック クラスを作成しました。最初に呼び出されたときはすべて正常に動作しますが、2回目にレコードセットが呼び出されたときにアイデアが開かれませんか?

Class SQLConnection
Private Sub Class_Initialize
    set ConnectionObject = Server.CreateObject("ADODB.Connection")
    Set RecordsetObject = Server.CreateObject("ADODB.Recordset")
End Sub
Private Sub Class_Terminate
    Set ConnectionObject = Nothing
    Set RecordsetObject = Nothing
End Sub

Public Default Property Get Item(sString)
        On Error Resume Next
            Item = RecordsetObject(sString)
        On Error GoTo 0
If Err.Number  <> 0 then
        Item = null
    End if
End Property

Public Sub MoveNext
    If Not RecordsetObject.EOF Then RecordsetObject.MoveNext
End Sub

Public Function EOF 
    EOF = RecordsetObject.EOF
End Function

Public Sub Open(SQLStr,ConnStr)
    ConnectionObject.Open ConnStr
    RecordsetObject.Open SQLStr, ConnectionObject, 3
End Sub

Public Sub Close
    RecordsetObject.Close
    ConnectionObject.Close
End Sub

End Class


Set SQLConn = New SQLConnection
SQLConn.Open "SELECT top 10 id FROM tblProfileVillages", ConnectionString
Do While Not SQLConn.EOF
    Response.write(SQLConn("id"))
    SQLConn.MoveNext
Loop
SQLConn.Close
Set SQLConn = nothing
4

2 に答える 2

0

SQLステートメントをグリッドに表示できない場合、insertステートメントのようにオブジェクトが即座に閉じます。

コードを実行する前にオブジェクトが開いているかどうかを確認することでこれを解決しましたIf RecordsetObject.State = 1 then

于 2013-08-05T01:52:11.293 に答える