1

我如何从 sql 十进制类型转换为 double 而无需像这个答案所建议的那样使用查询强制转换底层数据库。我在 MySQL 上并从十进制(20,8)转换为实际导致错误。我正在使用 mysql-connector c++,它可以很好地加载和运行 queires,但我无法将 mysql-connector 格式的数据转换为 c++ 格式的数据。

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

4

1 回答 1

1

我没有任何使用 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别处。

于 2012-10-11T18:11:18.013 回答