SOCI: Как бороться со многими колонками?

Я использую SOCI для доступа к базе данных PostgreSQL. Одна конкретная таблица, в которую я вставляю и выбираю, имеет (в настоящее время) 72 столбца. Мой вопрос: как лучше всего справиться с таким количеством столбцов?

Я определил, что для выбора лучше всего использовать динамический набор результатов SOCI. Таким образом, я могу перебрать столбцы.

Однако для вставки у меня возникли трудности. Чего я хочу добиться, так это:

int vals[NUM_VALS];
statement st = s.prepare << "INSERT INTO table (c0, c1, c2, ...) VALUES (";
for(int i = 0; i < NUM_VALS; ++i)
st << vals[i];
st << ")";
st.execute();

Возможно ли что-нибудь подобное? Мне не повезло найти простой способ справиться с большим количеством столбцов.

1

Решение

Список рассылки SOCI-пользователей дал мне ответ. Требуется отложенное построение объекта выписки. Например, чтобы вышеперечисленное работало, измените его на:

int vals[NUM_VALS];
auto temp = (s.prepare << "INSERT INTO table (c0, c1, c2, ...) VALUES (:c1, :c2, ...)");
for(int i = 0; i < NUM_VALS; ++i)
temp , into(vals[i]);
statement st(temp).execute();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]