使用 SOCI 从 Microsoft SQL 服务器获取 bigint

Get bigint from Microsoft SQL Server with SOCI

我正在尝试获取来自我的数据库(Microsoft SQL 服务器)的 bigint 值(在我的示例中名为 "NUM")。在下面的代码中,即使我知道 int 小于 bigint 但转换总是失败,我仍试图将其作为 int 获取。我也尝试将其作为 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

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

我不知道这是否是最佳解决方案,但这是我发现的唯一可行的解​​决方案:

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