Recordset после закрытия соединения
От: Аноним  
Дата: 27.07.09 14:39
Оценка:
Добрый день.

Есть такая задачка: подключится к sql серверу, прочитать в рекордсет таблицу, закрыть соединение с базой, и в дальнейшем в течении определенного периода читать данные из рекордсета. т.е. вроде кеширования получается. но возникла проблема, что когда закрывается соединение читать рекордсет уже нельзя. собственно вопрос можно ли так организовать загрузку данных в рекордсет, чтобы и после закрытия соединения его можно было использовать для чтения данных. подключаюсь и загружают в рекордсет так

_ConnectionPtr ptrConn("ADODB.Connection");
_RecordsetPtr ptrIPBlocksUrlsRs("ADODB.Recordset");

ptrConn->PutIsolationLevel(adXactCursorStability);
ptrConn->PutCursorLocation(adUseClient);
ptrConn->PutMode(adModeUnknown);
ptrConn->put_CommandTimeout(60);
ptrConn->PutProvider("SQLOLEDB.1");
if (ptrConn->Open("Data Source=Server; Initial Catalog=mydb; User ID=sa; Password=;", "", "", adConnectUnspecified) == S_OK){
    
    ptrIPBlocksUrlsRs->Open(L"MyTable", (IDispatch*)ptrConn, adOpenStatic, adLockOptimistic, adCmdTable);
    ptrConn->Close();
    
}

//вот тут уже получаю эксепшн
int rc = ptrIPBlocksUrlsRs->RecordCount;


Заранее благодарю.

03.08.09 22:26: Перенесено модератором из 'C/C++' — Кодт
Re: Recordset после закрытия соединения
От: GarryIV  
Дата: 04.08.09 13:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.


А>Есть такая задачка: подключится к sql серверу, прочитать в рекордсет таблицу, закрыть соединение с базой, и в дальнейшем в течении определенного периода читать данные из рекордсета. т.е. вроде кеширования получается. но возникла проблема, что когда закрывается соединение читать рекордсет уже нельзя. собственно вопрос можно ли так организовать загрузку данных в рекордсет, чтобы и после закрытия соединения его можно было использовать для чтения данных.


How To Create ADO Disconnected Recordsets in VBA/C++/Java
WBR, Igor Evgrafov
Re: Recordset после закрытия соединения
От: fay Украина www.bekhter.net
Дата: 14.08.09 10:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.


А>Есть такая задачка: подключится к sql серверу, прочитать в рекордсет таблицу, закрыть соединение с базой, и в дальнейшем в течении определенного периода читать данные из рекордсета. т.е. вроде кеширования получается. но возникла проблема, что когда закрывается соединение читать рекордсет уже нельзя. собственно вопрос можно ли так организовать загрузку данных в рекордсет, чтобы и после закрытия соединения его можно было использовать для чтения данных.

"ADODB.Recordset" зависимый обьект от "ADODB.Connection", другими словами, он не может существовать без связи с DataBase.
Если тебе необходимо кэширование, то делай это сам.
ptrIPBlocksUrlsRs->Open(L"MyTable", (IDispatch*)ptrConn, adOpenStatic, adLockOptimistic, adCmdTable);
std::vector<MyTable> arrQuery;
while( !EOF ) {
  ....
  arrQuery.push_back(...);
}
    ptrConn->Close();

size_t rc = arrQuery.size();
Best regards,
Oleg Bekhter
Software Developer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.