我如何从 sql 十进制类型转换为 double 而无需像这个答案所建议的那样使用查询强制转换底层数据库。我在 MySQL 上并从十进制(20,8)转换为实际导致错误。我正在使用 mysql-connector c++,它可以很好地加载和运行 queires,但我无法将 mysql-connector 格式的数据转换为 c++ 格式的数据。
我正在使用托管在 linux 上的 mysql 5.1.63,同时也从不同的 linux 机器上运行代码 c++
我如何从 sql 十进制类型转换为 double 而无需像这个答案所建议的那样使用查询强制转换底层数据库。我在 MySQL 上并从十进制(20,8)转换为实际导致错误。我正在使用 mysql-connector c++,它可以很好地加载和运行 queires,但我无法将 mysql-connector 格式的数据转换为 c++ 格式的数据。
我正在使用托管在 linux 上的 mysql 5.1.63,同时也从不同的 linux 机器上运行代码 c++
我没有任何使用 MySQL 标准 C++ 驱动程序(MySQL 连接器/C++)的经验。但是,我使用了 MySQL++ 驱动程序。
MySQL 连接器/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>
正确地添加了。
听起来您正在尝试复制您的vector<double>
某个地方,但没有正确执行。
你是从函数中返回这个吗?
编辑:
问题现在解决了。问题在vector
别处。