Задать вопрос
@tschin

Почему не выполняется запрос к БД SQlite в Qt 5?

Здравствуйте! Пытаюсь выполнить последовательно два запроса к одной и той же БД к различным таблицам. Первый запрос выполняется, второй нет. Проверял второй запрос напрямую через БД, он выполняется, через Qt нет. lastError никаких ошибок не выдает для второго запроса.
Вот код, который делает запросы к БД:

QSqlQuery a_query;

    QString stringQuery =QString("SELECT id FROM name_cars WHERE name='%1'").arg(nameCar);
    a_query.prepare(stringQuery);
    a_query.exec();
    QSqlRecord rec = a_query.record();
	
    int idCar=-1;
    while (a_query.next())
    {
        idCar = a_query.value(rec.indexOf("id")).toInt();
    }

    stringQuery =QString("SELECT color FROM cars WHERE name=%1").arg(idCar);
    a_query.prepare(stringQuery);
    a_query.exec();
	
    rec = a_query.record();

    QList<int> idColors;

    while (a_query.next())
    {
        int idColor = a_query.value(rec.indexOf("color")).toInt();
        idColors.append(idColor);
    }
  • Вопрос задан
  • 360 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Skillbox
    Профессия Разработчик С++
 с нуля + ИИ
    7 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
xpert13
@xpert13
Full Stack Developer
Мне кажется, что всё таки запрос должен быть другой (либо вам нужно менять структуру БД): вы уверены, что нужно сравнивать именно name с id?

Если всё таки причина не в этом, то попробуйте такой вызов:
stringQuery =QString("SELECT color FROM cars WHERE name=%1").arg(idCar);
a_query.exec(stringQuery);


Всё равно вы не используете prepare по назначению.
Ответ написан
@tschin Автор вопроса
Проблема была проста и позорна: я коннектился к той версии БД, в которой еще не заполнена эта таблица :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Uniscan Research Новосибирск
от 140 000 до 200 000 ₽
АО НПП «АМЭ» Санкт-Петербург
До 250 000 ₽
Базис-Центр Коломна
от 70 000 до 500 000 ₽