使用SOCI从Microsoft SQL Server获取bigint

时间:2015-04-17 13:01:49

标签: c++ sql-server odbc biginteger soci

我正在尝试从我的数据库(Microsoft SQL Server)获取bigint值(在我的示例中命名为" NUM")。在下面的代码中,即使我知道int小于int但是演员总是失败,我也会尝试将其作为bigint。我也尝试将其作为long 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

我的问题是:获得此值的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我不知道它是否是最佳解决方案,但它是我发现的唯一有效的解决方案:

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