CRecordset монополизирует доступ к базе?
У мне нужно открыть excel-файл и скопировать содержимое таблицы демо в демо4.
Алгоритм такой:
Цитата:
sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),
sDriver, sExcelFile, sExcelFile);
database.OpenEx(sSql,CDatabase::noOdbcDialog;
sDriver, sExcelFile, sExcelFile);
database.OpenEx(sSql,CDatabase::noOdbcDialog;
Присоединяюсь
Цитата:
CRecordset cr, cr1;
cr.m_pDatabase = &database;
cr1.m_pDatabase = &database;
cr.m_pDatabase = &database;
cr1.m_pDatabase = &database;
делаю два Рекордсета
Цитата:
cr.Open(CRecordset::dynaset,_T("SELECT * FROM demo"),CRecordset::none);
первым делаю выборку всех записей из таблицы демо
Цитата:
short index = 0;
cr.Move(0);
CString txt, nmb;
while(!cr.IsEOF()) {
cr.GetFieldValue(index, txt);
AfxMessageBox(txt, 0, 0);
cr.GetFieldValue(1, nmb);
AfxMessageBox(nmb, 0, 0);
cr.Move(0);
CString txt, nmb;
while(!cr.IsEOF()) {
cr.GetFieldValue(index, txt);
AfxMessageBox(txt, 0, 0);
cr.GetFieldValue(1, nmb);
AfxMessageBox(nmb, 0, 0);
получил и увидел содержимое, все ок.
Цитата:
sSql.Format(_T("insert into demo4 (Txt TEXT, Nmb TEXT) VALUES ('%s', '%s')"), txt, nmb);
AfxMessageBox(sSql, 0, 0);
AfxMessageBox(sSql, 0, 0);
вижу запрос. Собираюсь послать его через cr1, чтобы записи в cr не затерлись
Таблица демо4 существует
Цитата:
cr1.Open(CRecordset::dynaset,sSql,CRecordset::none);
и отсюда программа вылетает с ошибкой
Цитата:
cr.MoveNext();
}
}
может cr монополизирует доступ к базе? Подскажите как мне выпутаться.
sSql.Format(_T("insert into demo4 (Txt TEXT, Nmb TEXT) VALUES ('%s', '%s')"), txt, nmb);
и переправил на database.ExecuteSQL. Заработало.
Возник еще вопрос. В таблице будет 40000 записей. Что будет быстрее
1. сравнить CString'и
2. переделать CString в double и сравнить
Цитата: cursor
Возник еще вопрос. В таблице будет 40000 записей. Что будет быстрее
1. сравнить CString'и
2. переделать CString в double и сравнить
Попробуйте и то и то, и засеките время. Можно просто с помощью GetTickCount (хотя результаты наверное будут не точные). Или лучше всего сравните с помощью профилировщика.
upd.: Хотя нет, вру, с помощью GetTickCount ничего путного вы не получите.
Почему записи в таблицах экселя добавленные вручную не извлекаются запросами? Как это можно исправить?