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

Есть такая задачка: подключится к 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;


Заранее благодарю.
Re: Recordset после закрытия соединения
От: Аноним  
Дата: 29.07.09 04:22
Оценка:
Здравствуйте, Аноним, Вы писали:

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


А>Есть такая задачка: подключится к 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;
А>


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


Можно, но рекордсет нужно скопировать, почитайте здесь http://www.vbrad.com/article.aspx?id=12
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.