Дмитрий
Oct. 6, 2021, 4:07 p.m.

Вставка даты и времени в таблицу СУБД SQLite

qt, sql, sqlite, datetime, insert

Всем привет!

Использую базу данных SQLITE.
Пытаюсь в таблицу записать дату и время.
Делаю так:

  1. QString q("CREATE TABLE IF NOT EXISTS dates (date1 DATETIME NOT NULL , date2 DATETIME NOT NULL)");
  2. QSqlQuery query(db);
  3. if(!query.exec(q))
  4. {
  5. qDebug() << "Unable to create table meter_configurations";
  6. }
  7.  
  8. QString qr("INSERT INTO dates (date1, date2 VALUES (?,?)");
  9. QSqlQuery q1(db);
  10. q1.prepare(qr);
  11. QDateTime dt1 = QDateTime::currentDateTime();
  12. QDateTime dt2 = QDateTime::currentDateTime();
  13. q1.addBindValue(dt1);
  14. q1.addBindValue(dt2);
  15. if(!q1.exec())
  16. {
  17. qDebug() << "Insert error!";
  18. qDebug() << q1.lastError();
  19. qDebug() << q1.lastQuery();
  20. }
  21.  

Но получаю ошибку: QSqlError("", "Parameter count mismatch", "")

Пробовал так:

  1. QString qr("INSERT INTO dates (date1, date2 VALUES (datetime(?), datetime(?)");
  2. QSqlQuery q1(db);
  3. q1.prepare(qr);
  4. QDateTime dt1 = QDateTime::currentDateTime();
  5. QDateTime dt2 = QDateTime::currentDateTime();
  6. q1.addBindValue(dt1.toString("yyyy-MM-dd hh:mm:ss"));
  7. q1.addBindValue(dt2.toString("yyyy-MM-dd hh:mm:ss"));

Но получаю ту же ошибку.

Как вставить дату и время? Спасибо!

3

Do you like it? Share on social networks!

5
МЛ
  • Oct. 6, 2021, 4:20 p.m.

а если заменить

  1. q1.addBindValue(dt1.toString("yyyy-MM-dd hh:mm:ss"));

на

  1. q1.addBindValue(dt1.toString(Qt::ISODate));
    Дмитрий
    • Oct. 6, 2021, 4:38 p.m.

    Попробовал - тоже самое

      Дмитрий
      • Oct. 6, 2021, 5:11 p.m.
      • The answer was marked as a solution.

      Проблема решилась.
      Во вставке забыл одну закрывающую скобку в запросе. Нужно так:

      1. QString qr("INSERT INTO dates (date1, date2) VALUES (?,?)");
      2. QSqlQuery q1(db);
      3. q1.prepare(qr);
      4. QDateTime dt1 = QDateTime::currentDateTime();
      5. QDateTime dt2 = QDateTime::currentDateTime();
      6. q1.addBindValue(dt1);
      7. q1.addBindValue(dt2);
      8.  
      9. if(!q1.exec())
      10. {
      11. qDebug() << "Insert error!";
      12. qDebug() << q1.lastError();
      13. qDebug() << q1.lastQuery();
      14. }
        ma
        • Oct. 26, 2021, 9:55 p.m.
        1. auto list_it_end = list.end();
        2. while (it != list_it_end)
        3. {
        4. auto [asset, data, time, mks_time, price, operation, quality] = *it;
        5. query.prepare( "INSERT INTO " + asset + "_ticker_table (asset, data, time, mks_time, price, operation, quality)" +
        6. " VALUES(:asset, :data, :time, :mks_time, :price, :operation, :quality);");
        7.  
        8. query.bindValue(":asset", asset);
        9. query.bindValue(":data", data);
        10. query.bindValue(":time", time);
        11. query.bindValue(":mks_time", mks_time);
        12. query.bindValue(":price", price);
        13. query.bindValue(":operation", operation);
        14. query.bindValue(":quality", quality);
        15.  
        16. if (!query.exec())
        17. {
        18. Message mes(VIEW, VIEW_MESSAGE, NONE, ERROR_);
        19. mes.add("ERROR DATABASE", query.lastError().text());
        20. Send_Message(VIEW, mes);
        21. }
        22. ++it;
        23. //str_insert.clear();
        24. //insert.clear();
        25. }
          ma
          • Oct. 26, 2021, 9:56 p.m.

          Правда у меня Postgresql

            Comments

            Only authorized users can post comments.
            Please, Log in or Sign up
            • Last comments
            • AK
              April 1, 2025, 11:41 a.m.
              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
            • Evgenii Legotckoi
              March 9, 2025, 9:02 p.m.
              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
            • VP
              March 9, 2025, 4:14 p.m.
              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
            • ИМ
              Nov. 22, 2024, 9:51 p.m.
              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
            • Evgenii Legotckoi
              Oct. 31, 2024, 11:37 p.m.
              Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup