конвертировать из sql типа decimal (20,8) в c ++ double

Как мне преобразовать из sql десятичного типа в удвоение БЕЗ приведения базовой базы с запросом, как это ответ предлагает. Я нахожусь на MySQL и приведение от десятичной (20,8) к ошибкам реальных причин. Я использую MySQL-коннектор C ++, и он прекрасно загружает и запускает очереди, но я не могу преобразовать данные из формата MySQL-коннектора в C ++.

Я использую MySQL 5.1.63, размещенную на Linux, а также запускаю код c ++ с другой машины Linux.

1

Решение

У меня нет опыта использования стандартного драйвера C ++ для MySQL (MySQL Connector / C ++). Тем не менее, я использовал драйвер MySQL ++.

Документация для MySQL Connector / C ++ довольно отсутствует. Тем не менее, похоже, что он пытается придерживаться JDBC API.

Вы можете просмотреть документация для JDBC на сайте Oracle.

Я предполагаю, что преобразовать значение в удвоение довольно просто:

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 проблема была в другом месте.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]