MariaDB запрос двойного типа данных - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь запросить строку (C ++) переменной типа данных (double) в mariaDB. Я успешно отправляю любые другие переменные (i, b и buffer), но не удваиваюсь.

Вот лишь часть кода, где я пытаюсь отправить переменную hh и другие. Любые другие переменные, которые вы видите, я отправляю без проблем.

double hh= -4.762486e-09;
string query = "INSERT INTO tabulka (n, napatie, prud, cas) VALUES ("+to_string(i)+","+to_string(b)+","+to_string(hh)+",'"+buffer+"')";

В базе данных Tabulka я получаю 0 от переменной чч.

TABLE tabulka:

MariaDB [hodnoty]> select n, napatie,prud, cas from hodnoty.tabulka;
+------+-----------+------+---------------------+
| n    | napatie   | prud | cas                 |
+------+-----------+------+---------------------+
|    1 |  0.000055 |    0 | 2020-03-03 12:20:09 |

MariaDB [hodnoty]> SHOW COLUMNS FROM tabulka;
+---------+-----------+------+-----+---------------------+-------------------------------+
| Field   | Type      | Null | Key | Default             | Extra                         |
+---------+-----------+------+-----+---------------------+-------------------------------+
| n       | int(11)   | YES  |     | NULL                |                               |
| napatie | float     | YES  |     | NULL                |                               |
| prud    | double    | YES  |     | NULL                |                               |
| cas     | timestamp | NO   |     | current_timestamp() | on update current_timestamp() |
+---------+-----------+------+-----+---------------------+-------------------------------+

Когда я пытаюсь вставить его точное значение все в порядке:

MariaDB [hodnoty]> insert into tabulka (prud) values ('-4.7624816e-09');
Query OK, 1 row affected (0.001 sec)
MariaDB [hodnoty]> select n, napatie,prud, cas from hodnoty.tabulka;
+------+---------+---------------------+---------------------+
| n    | napatie | prud                | cas                 |
+------+---------+---------------------+---------------------+
| NULL |    NULL | -0.0000000047624816 | 2020-03-03 13:32:44 |
+------+---------+---------------------+---------------------+

Можете ли вы помочь мне, что я делаю неправильно? Буду счастлив как слон.

1 Ответ

0 голосов
/ 03 марта 2020

Вы всегда можете проверить строку запроса перед ее выполнением.

to_string (double) имеет точность 6 десятичных знаков. Чтобы преобразовать double в строку, используйте ostringstream.

  std::ostringstream streamObj;
  streamObj << hh;
  cout << streamObj.str();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...