Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.15.99] |
|
Сообщ.
#1
,
|
|
|
Кто мне сможет объяснить следующую проблему: Я загружаю( записываю) через ODBC базу данных .dbf на 7936 записей по 50 колонок с использованием CDatabase и CRecordset. Однако запись и загрузка данных длятся невероятно долго, в то время как DBFViewer грузит туже БД мухой. Частично загрузку уудалось ускорить с использование DoFieldExchange ( в 3 раза быстрее) однако с запи- сью проблему решить не удалось. И еще один глюк. При установке в ODBC Manager под Win98 SE для DBF флажка Exclusive время загрузки сразу увеличилось раз в 20 ( судя по постоянно горящему LED HDD драй- вер каждую запись считывает непосредственно с дика, хотя до этого он считывал файл блоками через буфер). После снятия флажка ничего не изменилось . Где можно найти описание поддерживаемых ОВИС SQL функций, т. к. вроде они не сов- падабт с стандартом SQL_92. Буду блогадарен за помощь. |
Сообщ.
#2
,
|
|
|
Разница в быстродействии возникает по той простой причине, что всякие вьюеры, как правило, читают dbf напрямую, без всяких ODBC (формат dbf файла несложен, поэтому достаточно просто написать поддержку). Что касается повышения быстродействия с использованием MFC классов... все эти классы CRecordset CDatabase имеют жуткие ограничения, единственное их преимущество - удобство использования. Тут два пути: либо ты наследуешь класс от CRecordset и дописываешь нехватающую функциональность, либо пишешь все через API. А так, почитай MSDN, смотри в методе CRecordset::Open() параметр dwOptions, метод SetRowsetSize() и раздел Recordset: Fetching Records in Bulk (ODBC)
|
Сообщ.
#3
,
|
|
|
Если горит LEG HDD то драйвер ODBC все операции с базой пишет в Log-файл
(Обычно c:\SQL.log).Попробуй в ODBC Maneger установить Tracing... When to trace в положение Start... |