2013-06-19 47 views
1

我使用SOCI來訪問PostgreSQL數據庫。我插入並選擇的一個特定表格(目前)有72列。我的問題是如何最好地處理這麼多列?SOCI:如何處理很多列?

我確定選擇使用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(); 

是這樣的事情嗎?我沒有找到任何處理大量列的簡單方法。

回答

2

SOCI-users郵件列表爲我提供了答案。聲明對象的延期構造是必需的。例如,要使上述工作,將其更改爲:

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(); 
+0

鏈接到郵件列表帖子將不勝感激。 – Fabian

+0

另外,你想'使用'而不是'進入'。當'into'嘗試從數據庫獲取值時,您的SQL命令需要將值輸入數據庫。另一個提示是:將臨時對象放入行集中,以便輕鬆地遍歷結果行集合(行集) rs(temp);語句st被隱藏在行集中並自動執行。 – Fabian