1

SOCIのコアインターフェイスを使用して結果を行セットオブジェクトに取得しようとする次のコードがあります。このコードは完全に機能しますが、結果セットを行セットポインターに直接取得する方法が見つかりません。

int main(int argc, char* argv[])
{   
    std::string user = "dbuser1";
    std::string password= "dbuser1";
    std::string alias= "localhost:1521/ora12c"; 
    std::string connection = "service=" + alias + " user=" + user + " password=" + password;
    soci::rowset<soci::row>* rowSet = NULL;
    try
    {
        soci::session sociSession(soci::oracle, connection);
        soci::row row;
        std::vector<std::string> values;
        std::string m_sql = "SELECT *  FROM TEST_TABLE WHERE RECORD_STATUS =:1 AND LOGIN_STATUS=:2";
        values.push_back("0");
        values.push_back("1");

        soci::statement st(sociSession); 
        st.exchange(soci::into(row));
        for(std::size_t i=0; i<values.size(); ++i) 
        {
            st.exchange(soci::use(values[i]));
        }
        st.alloc();
        st.prepare(m_sql);
        st.define_and_bind();
        st.execute(true);

        //TODO get the result set to to rowSet 
    }

    catch (soci::oracle_soci_error const &e)
    {
        cout << "Oracle error: " << e.err_num_
             << " " << e.what() << endl;
    }
    catch (exception const &e)
    {
        cout << "Some other error: " << e.what() << endl;
    }
    return 0;
}

ドキュメントには、以下のようなイテレータを取得するためのセクションがsoci::rowset_iterator<soci::row> it(st, row)あり、私が見つけた最も近いものexchange_for_rowsetはステートメント クラスにありました。しかし、それを使用しても運がありませんでした。soci::rowset<soci::row>*結果セットをsociに直接割り当てる機能はありますか 、それとも繰り返し処理して割り当てる必要がありますか? 私は soci の Core Interface に不慣れで、あまり例が見つかりませんでした。大変助かります。

4

0 に答える 0