powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перебор записей таблицы
9 сообщений из 9, страница 1 из 1
Перебор записей таблицы
    #33854852
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть небольшая проблемка:
в С++Builder создано приложение которое вытягивает данные из БД через ADODataSet, необходимо эти данные засунуть в STL-есвкий vector<>.
Я делаю это так:
while (!DBModule->ADODataSet->Eof)
{
.... занос данных в ячейку вектора...
DBModule->ADODataSet->Next();
}
Но данный подход работает очень долго прибольших обьемах данных ((

Кто знает другой способ для более быстрого извлечения данных???? Очень нужно!
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855066
зачем
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем так делать? Одни и те же данные хранить два раза в памяти.
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855096
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хранить - после переноса в вектор, я закрываю соединение и освобождаю ресурс - данные остаются только в векторе с которым и происходит дальнейшая работа (причем со всеми данными сразу)
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855180
a_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО быстро не получится и надо будет бугать по датасету, можно для вектора зарезервировать память reserve.
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855233
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело что тормозом выступает ADODataSet->Next()
шо я вектором, шо без вектора разницы не заметно.
Вопрос можно сформулировать еще так:
Можно ли из ДатаСета перегнать данный одним махом (не циклом) в какойнибудь буфер в памяти?
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855239
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkCorsair
Кто знает другой способ для более быстрого извлечения данных???? Очень нужно!

вы говорите ADO чтобы открывать reaodonly, forward only ?

также можно посмотреть MSDN -> GetRows

там читается рекордсет в массив
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855258
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да доступ к базе только на чтения режим блокировки REadOnly и тип курсора ctOpenForwardOnly или ctStatic. И при таких настройках оно всеравно долго работает.
За GetRow - спасибо, гляну.
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855435
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2: Lepsik
Еще раз большое спасибо - GetRows как раз то что мне нужно!
...
Рейтинг: 0 / 0
Перебор записей таблицы
    #33855436
DarkCorsair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тему можно закрывать ...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Перебор записей таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]