1

SQLAPI++ を使用して値を SQL データベースに挿入しています。チェス ゲームからアクションを抽出し、データベースのアクション テーブルに文字列として挿入しようとしています (action_id=1, action_name=e4)。ここに私のコードがあります:

int main()
{
    SAConnection con;
    SACommand cmd;
    try
    {
        con.Connect("test","tester","tester", SA_SQLServer_Client);
        cmd.setConnection(&con);
        std::ifstream pgnfile("sample.pgn");
        pgn::GameCollection games;
        pgnfile >> games;
        for(pgn::GameCollection::iterator itr=games.begin();itr!=games.end();itr++)
        {
            pgn::Game game = *itr;
            pgn::MoveList move_list=game.moves();
            for(pgn::MoveList::iterator itr2=move_list.begin();itr2!=move_list.end();itr2++)
            {
                pgn::Move move=*itr2;
                cmd.setCommandText("insert into actions (action_id,action_name) values (:1,:2)");
                cmd.Param(1).setAsLong() = 1;
                cmd.Param(2).setAsString() = move.black().str(); // the line that cause the error

             }
        }
    }       
}

問題はその行にあります:

cmd.Param(2).setAsString() = move.black().str();

std::string から SAString に変換できません! この std::string から SAString への変換方法を教えてください。

4

1 に答える 1

1

あなたの特定のクラスはわかりませんがSAString、C スタイルのconst char*文字列 (たとえばSAString("Connie")) からそのような文字列オブジェクトを構築できるはずだと思います。

を指定すると、std::stringそのメソッドを呼び出して、そのc_strような C スタイルの文字列を取得できます。これは、おそらく を構築するために使用できますSAString

したがって、メソッド呼び出しシーケンスでは次のようになります。

 ... = move.black().str();

strを返すと仮定するとstd::string、次の呼び出しを追加しますc_str

... = move.black().str().c_str();
于 2016-10-30T17:12:15.153 に答える