У меня есть приложение VB6, в котором я беру данные из базы данных. У меня возникла проблема при закрытии созданного сеанса.VB6 CreateObject ("OracleInProcServer.XOraSession") не удалось закрыть сеанс
Похоже, сессия сохраняется даже после того, как я установил объект сеанса на Nothing
. Похоже, что он закрывается только при закрытии приложения.
Я использую следующий запрос, чтобы проверить сеанс в базе данных.
SELECT * FROM v$session where terminal='VirtualMachineName';
Ниже приведен код,
Dim pCounter As Long, strLoadSQL As String
Dim objCursor As OraDynaset
Dim tmpDBSessobj As OracleInProcServer.OraSession
Dim tmpDBClientobj As OracleInProcServer.OraDatabase
Dim objresetGI As GameInfo
On Error GoTo ErrorHandler
Set tmpDBSessobj = CreateObject("OracleInProcServer.XOraSession")
Set tmpDBClientobj = tmpDBSessobj.OpenDatabase(strDBServiceName, strDBUsernamePassword, ORADB_ORAMODE)
'set autocommit false ---
tmpDBClientobj.AutoCommit = False
'set params
Do Until tmpDBClientobj.Parameters.Count = 0
For pCounter = 0 To tmpDBClientobj.Parameters.Count - 1
tmpDBClientobj.Parameters.Remove pCounter
Next
Loop
'bind
tmpDBClientobj.Parameters.Add "ocursor", Nothing, ORAPARM_OUTPUT
tmpDBClientobj.Parameters(0).serverType = ORATYPE_CURSOR
'declare proc signature
strLoadSQL = "begin resetpackage.getresetID(:ocursor); end;"
'reset this game
tmpDBClientobj.ExecuteSQL (strLoadSQL)
Set objCursor = tmpDBClientobj.Parameters(0).Value
'load the list box
If objCursor.RecordCount > 0 Then
argscollection.Clear
objCursor.MoveFirst
Do Until objCursor.EOF
objresetGI.strGameNo = objCursor.fields(0).Value
objresetGI.strAction = objCursor.fields(1).Value
objresetGI.strProcessInd = objCursor.fields(2).Value
argscollection.Add objresetGI, objCursor.fields(0).Value
objCursor.MoveNext
Loop
End If
Set objCursor = Nothing
tmpDBClientobj.Close
Set tmpDBClientobj = Nothing
Set tmpDBSessobj = Nothing
Любая помощь в этой связи будут оценены.