如何将sql decimal类型转换为double,而不使用查询来构建基础数据库,如answer所示。我在MySQL上并从十进制(20,8)转换为实际导致错误。我正在使用mysql-connector c ++,它可以加载和运行queires,但是我无法将数据从mysql-connector格式转换为c ++格式。
我正在使用linux上托管的mysql 5.1.63,同时从不同的linux机器运行代码c ++以及
答案 0 :(得分:1)
我没有使用MySQL标准C ++驱动程序(MySQL Connector / C ++)的经验。但是,我使用了MySQL ++驱动程序。
MySQL Connector / C ++的文档非常缺乏。但是,它看起来似乎试图坚持使用JDBC API。
您可以在Oracle网站上查看documentation for 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
问题在其他地方。