从sql类型decimal(20,8)转换为c ++ double

时间:2012-10-07 20:25:37

标签: c++ double decimal mysql-connector

如何将sql decimal类型转换为double,而不使用查询来构建基础数据库,如answer所示。我在MySQL上并从十进制(20,8)转换为实际导致错误。我正在使用mysql-connector c ++,它可以加载和运行queires,但是我无法将数据从mysql-connector格式转换为c ++格式。

我正在使用linux上托管的mysql 5.1.63,同时从不同的linux机器运行代码c ++以及

1 个答案:

答案 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问题在其他地方。