我正在使用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();有没有可能发生这样的事情?我没有找到一种简单的方法来处理大量的列。
发布于 2013-06-23 21:46:26
SOCI-users邮件列表为我提供了答案。需要延迟构造statement对象。例如,要使上面的代码生效,请将其更改为:
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();https://stackoverflow.com/questions/17196482
复制相似问题