![]() |
#10 |
Участник
|
Ещё в самом первом сообщении я писала, что
Цитата:
Пробую открыть коннект из Аксапты, указав в строке подключения тот самый файл udl - коннект открывается!
Под считыванием данных понимается перебор в цикле записей уже полученного ResultSet или RecordSet, операция получения значения первого - n-ого поля текущей записи (соответственно ResultSet.getString(n) и RecordSet.fields.item(n-1).value()) и вставка этих значений во временную таблицу. Чтобы понять, на каком именно этапе возникает замедление при работе через ODBC на указанном выше объёме данных, последовательно исключались: 1. вставка во временную таблицу. Общее время операции не изменилось - 41 сек. 2. вставка во временную таблицу и считывание значений полей, кроме первого (т.е. оставила только перебор записей ResultSet в цикле и getString(1) с помещением результата в переменную). Итог - 3 сек. 3. для полноты эксперимента оставила перебор в цикле и вставку во временную таблицу констант, исключила resultSet.get...(). Результат <= 1сек. Код для сравнения могу привести, но немного позже. Для ADO использовала тот же подход, что и привёл MikeR, с двумя несущественными отличиями: из классов CCADO* использовала только CCADOField (из-за преобразования значений в методе value()) b после получения RecordSet делала recordSet.moveLast()+recordSet.moveFirst() (для обеспечения корректной работы с RecordSet, в частности получения корректного количества записей RecordCount() в наборе). |
|
Теги |
ado, connection string |
|
|