Я использую соединение OLEDB с базой данных Sybase с файлом ADODB.dll версии 7.10.6070.0 (который поставляется из пакета Sybase 12.5). Мне нужно иметь возможность открыть соединение, использовать объект команды, чтобы заполнить набор записей из хранимой процедуры, затем закрыть соединение и передать обратно отключенный набор записей. Мои попытки пока терпят неудачу, так как каждый раз, когда я закрываю соединение, мой набор записей также закрывается (что означает, что он не отключен).
Есть ли свойство, которое я должен установить где-то, чтобы указать, что набор записей должен быть отключен? Я не могу установить Recordset.ActiveConnection = False, потому что получаю исключение («Не удается изменить свойство ActiveConnection объекта Recordset, в качестве источника которого используется объект Command.»). Я устанавливаю Command.ActiveConnection = False, но это не мешает закрытию набора записей, как только я закрываю объект подключения.
Отрывок:
Dim conn as New ADODB.Connection()
conn.Open("connectionString", "UserID", "Password")
Dim cmd as New ADODB.Command()
' Set some parameters on the command.
cmd.ActiveConnection = conn
cmd.CommandText = "StoredProcedureName"
cmd.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc
Dim rs as New ADODB.Recordset()
rs.Open(cmd)
Dim clonedRS as ADODB.Recordset = rs.Clone() ' one attempt to disconnect recordset
rs.Close() ' Does not close cloned recordset
cmd.ActiveConnection = Nothing ' another try at disconnecting recordset
conn.Close() ' Always closes the recordset, even the cloned one
return clonedRS ' Sadly, this is closed now.