@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);
    }
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 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 Автор вопроса
Проблема была проста и позорна: я коннектился к той версии БД, в которой еще не заполнена эта таблица :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы