0

SELECTに関連する 3 つのステートメントを取得しましUNION ALLた。sqlite3_prepare_v2()結果の行を準備するように複合ステートメントを設定しました。結果のデータを利用する場合、for()ループを使用できますか?

int i;
for(i = 0; sqlite3_step(res) == SQLITE_ROW; i++) {
    if (i == 0) data1 = sqlite3_column_int(res,0);
    else if (i == 1) data2 = sqlite3_column_int(res,0);
    else data3 = sqlite3_column_int(res,0);
}

これは機能するはずですか?試してみましたが、ガベージデータが表示されます。これを実装する別の方法はありますか?

4

1 に答える 1

0

これは機能します。ガベージ データは、まったく別の場所からのものです。これを使用して入力するコードの量を短縮できますが、これを使用できる量には制限があることに注意してください。

追加情報:それぞれUNIONの同じ引数を使用して異なるテーブルから選択するために使用できますWHERE。たとえば、ユーザーに 2 つのデータ パラメーターを入力させ、それらのパラメーターを使用する 4 つのテーブルがあり、いくつかの追加値のみが異なります。その追加の列の値を取得したいとしましょう。目的の出力が属するテーブルとは異なる何かをユーザーが入力できるようにします。SELECTと組み合わせたステートメントを使用するとUNION、実際の比較や長い反復を行うよりもはるかに簡単に目的の出力を選択できます。

于 2012-09-27T17:35:08.163 に答える