0

bigintデータベース (Microsoft SQL Server) から値 (この例では「NUM」という名前)を取得しようとしています。次のコードでは、 anが a より小さいintことを知っていても、キャストは常に失敗する場合でも、それを取得しようとしています。また、変数として、および他のタイプの変数として取得しようとしましたが、以下に示すように、実行時に常に同じ問題が発生します。intbigintlong long int

try
{
    session sql(odbc, "...");
    rowset<row> rs = (sql.prepare << "SELECT MAX(NUM) AS MAX_NUM FROM T1");

    for (rowset<row>::const_iterator it = rs.begin(); it != rs.end(); ++it)
    {
        row const& row = *it;

        cout << "MAX_NUM: " << row.get<int>("MAX_NUM") << endl;
    }

}
catch (exception const &e)
{
    cerr << "Error: " << e.what() << '\n';
}

次のゲッターも試しました。

cout << "MAX_NUM: " << row.get<long>("MAX_NUM") << endl;
cout << "MAX_NUM: " << row.get<long long>("MAX_NUM") << endl;
cout << "MAX_NUM: " << row.get<long long int>("MAX_NUM") << endl;

アプリケーションを実行すると、すべてのテストで同じエラーが出力されます。

Error: std::bad_cast

私の質問は次のとおりです。この値を取得する正しい方法は何ですか?

4

1 に答える 1

0

それが最善の解決策かどうかはわかりませんが、機能することがわかったのはこれだけです。

cout << "MAX_NUM: " << row.get<double>("MAX_NUM") << endl;
于 2015-04-20T06:25:40.540 に答える