Есть много способов сделать это:
- Извлечение отдельных столбцов из
базы данных
- Извлечение нечетных столбцов из базы данных
- Извлечение всей таблицы из базы данных
Извлечение отдельных столбцов
В этом методе вы указываете базе данных выбрать один столбец. Вы заполняете один вектор, повторяя набор результатов . Повторите эти действия для каждого интересующего вас столбца, используя разные векторы для каждого столбца.
Извлечение нечетных столбцов из базы данных
Скажите базе данных вернуть все интересующие вас столбцы (используйте много столбцов в операторе SELECT). Прочитать запись из набора результатов . Поместите значения добавления из полей в соответствующие векторы. Повторите чтение и извлечение для каждой записи в наборе результатов.
Извлечение всей таблицы из базы данных.
аналогично вышеуказанному. Скажите базе данных, чтобы получить все столбцы. Пока существует запись набора результатов , скопируйте значения из заинтересованных полей в соответствующие векторы.
Последний способ может быть самым быстрым, поскольку база данных возвращает строки из таблицы без фильтрации. Другие методы требуют, чтобы база данных создала новый набор результатов записей, фильтруя из существующей таблицы. Самый быстрый алгоритм получается при профилировании.
Редактировать 1: пример кода
Я не использую SQL Server 2008, но MySQL. Так что этот код не будет работать именно для ваших целей.
const char * select_statement[] =
"SELECT 1att, 3att, 5att, 7att, 9att\n"
"FROM data_table;\n";
Result_Set_Type * p_result_set = 0;
p_result_set = database.execute_query(select_statement);
if (p_result_set)
{
while (p_result_set->next())
{
att1_vector.push_back(p_result_set->get_value("1att");
att3_vector.push_back(p_result_set->get_value("3att");
att5_vector.push_back(p_result_set->get_value("5att");
att7_vector.push_back(p_result_set->get_value("7att");
att9_vector.push_back(p_result_set->get_value("9att");
}
}