1

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

このようなことは可能ですか?多数の列を簡単に処理する方法を見つけることができませんでした。

4

1 に答える 1

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();
于 2013-06-23T13:46:25.687 に答える