使用 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;
我正在尝试获取来自我的数据库(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;