1

この回答が示唆するように、基になるデータベースをクエリでキャストせずに、sql decimal 型から double に変換するにはどうすればよいですか。私は MySQL を使用しており、decimal(20,8) から real にキャストするとエラーが発生します。私は mysql-connector c++ を使用しており、queires を正常にロードして実行しますが、データを mysql-connector 形式から c++ の形式に変換できません。

Linuxでホストされているmysql 5.1.63を使用していますが、別のLinuxマシンからもコードc ++を実行しています

4

1 に答える 1

1

MySQL 用の標準 C++ ドライバー (MySQL Connector/C++) を使用した経験はありません。ただし、MySQL++ ドライバーを使用しました。

MySQL Connector/C++ のドキュメントはかなり不足しています。ただし、JDBC API に固執しようとしているように見えます。

Oracle サイトで JDBC のドキュメントを参照できます。

値を double に変換するのはかなり簡単だと思います。

sql::Connection* con;

//connection code, etc.

sql::Statement* stmt = con->createStatement();
sql::ResultSet* res = stmt->executeQuery("SELECT big_dec FROM test");

vector<double> results;

while (res->next()) 
{
    //Allow the driver to convert it to double for you.
    double res_double = res->getDouble("big_dec");
    // You can use either numeric offsets...
    cout << "num: " << res_double << endl;

    results.push_back(res_double);
}

編集:

が適切に変換されていると言いますが、適切doubleに挿入されていませんvector<double>

ループの後に次のことを直接試してください。

for (vector<double>::iterator it = results.begin(); it != results.end(); it++)
{
    cout << *it << endl;
}

編集:

forループはすべてを正常に出力します。vector<double>したがって、double が に正しく追加されていることがわかります。

どこかをコピーしようとしているように聞こえますがvector<double>、適切に実行していません。

これを関数から返していますか?

編集:

問題は解決しました。vector問題は別のところにありました。

于 2012-10-11T18:11:18.013 に答える