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

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

Войти через центр авторизации
Похожие вопросы