Михаиллл
Jan. 2, 2019, 4:07 p.m.

Как получить данные из QSqlQuery при запросе SELECT

qt, SELECT, QSqlQuery

Здравствуйте.
Делаю запрос в базу данных:

  1. QSqlQuery query;
  2. query.prepare("SELECT "
  3. "\"NumberID\" ,"
  4. "\"Name\" ,"
  5. "\"Comments\" ,"
  6. "\"Resume\""
  7. " FROM " + NameTableDB +
  8. " WHERE \"NumberID\" = 52"
  9. ";");
  10.  
  11. if (!query.exec()) {qDebug()<<"не получило данные";}
  12. else
  13. {
  14. qDebug()<<"получило данные";
  15. int IdResume = query.value(0).toInt();
  16. QString NameResume = query.value(1).toString();
  17. QString ComentResume = query.value(2).toString();
  18. QString Resume = query.value(3).toString();
  19. qDebug()<<"Id"<<IdResume;
  20. qDebug()<<"Name"<<NameResume;
  21. qDebug()<<"coment"<<ComentResume;
  22. qDebug()<<"resume"<<Resume;
  23. }

дебаг выдает:
получило данные
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
QSqlQuery::value: not positioned on a valid record
Id 0
Name ""
coment ""
resume ""
Скажите пожалуйста, как мне получить эти данные?

3

Do you like it? Share on social networks!

4
Михаиллл
  • Jan. 2, 2019, 4:28 p.m.

так работает

  1. query.first();
  2. QString NameResume = query.value(0).toString();
  3. QString ComentResume = query.value(1).toString();
  4. QString Resume = query.value(2).toString();
  5. qDebug()<<"Name"<<NameResume;
  6. qDebug()<<"coment"<<ComentResume;
  7. qDebug()<<"resume"<<Resume;
    Ruslan Polupan
    • Jan. 2, 2019, 4:32 p.m.
    • (edited)
    1. query.next();

    Первым оператором в else добавьте.

      R
      • Jan. 2, 2019, 4:35 p.m.
      • (edited)

      просто потрібно викликати query.next()
      короткий приклад з коду

      1. n_query = QString("SELECT item_type, "
      2. " FROM category WHERE item_id = %1")
      3. .arg(json["ic"].toInt()));
      4.  
      5. }
      6.  
      7. if (!m_query.exec(n_query))
      8. {
      9. qDebug() << Q_FUNC_INFO << n_query;
      10. qDebug() << m_query.lastError();
      11. }
      12.  
      13.  
      14. QSqlRecord rec = m_query.record();
      15. while (m_query.next()) {
      16. QJsonObject arr;
      17. arr.insert("it_type", QJsonValue(m_query.value(rec.indexOf("item_type")).toBool()));
      18. }
        Михаиллл
        • Jan. 2, 2019, 5:18 p.m.

        Извините что побеспокоил.
        Как уже говорил query.first(); все поправило.
        Спасибо всем за участие.

          Comments

          Only authorized users can post comments.
          Please, Log in or Sign up
          • Last comments
          • IscanderChe
            April 12, 2025, 5:12 p.m.
            Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
          • 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.
            Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…