SQL take a value
Привет. Не получается забрать значение с query.
Вот такой метод отрабатывает верно, то есть, если у меня поле weight = 3, то 3 и вернет
int ReportDataBase::getWeight(const int reportID) const { int weight = 0; QSqlQuery query(db); QString queryString = QString("SELECT weight FROM reports WHERE id=")+QString::number(reportID); query.prepare(queryString); query.exec(queryString); if(query.isActive()) { if(query.next()) { const QSqlRecord record = query.record(); weight = query.value(record.indexOf("weight")).toInt(); } } return weight; }
но вот аналогичный метод, уже пишет ошибку
QSqlQuery::value: not positioned on a valid record
в строке
query.value(record.indexOf("weight")).toInt()
int ReportDataBase::getLowerWeight() const { int weight = 0; QSqlQuery query(db); QString queryString = QString("SELECT MAX(weight) FROM reports"); query.prepare(queryString); query.exec(queryString); if(query.isActive()) { if(query.next()) { const QSqlRecord record = query.record(); weight = query.value(record.indexOf("weight")).toInt(); } } return weight; }
при чем, в отладчике я вижу нужное мне значение, вот оно
но всё-равно ставит weight = 0, как так-то? код же аналогичный! скрипт рабочий! я в SQLite проверял этот запрос.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
Г
- Геній
- Қыр. 13, 2024, 12:46 Т.Қ.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:66ұпай,
- Бағалау ұпайлары-1
t
- torgaev_2024
- Қыр. 8, 2024, 6:20 Т.Ж.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:33ұпай,
- Бағалау ұпайлары-10
Соңғы пікірлер
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
ВР
Linux жүйесінде файлдарды қалай көшіруге болады Screenshot_20240802-065123.png
Влад РусоковТам. 2, 2024, 1:47 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Енді форумда талқылаңыз
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCTМаусым 25, 2024, 1 Т.Ж.
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Добрый день
Есть мысль, что там нужно имя задать для результата. Скорее всего возвращается результат выполнения с именем, отличным от weight
Напишите так
огромное вам спасибо! я вчера сидел с этой фигней часов до 11 вечера и потом в отлачике нашел ошибку, ну думаю, делов на 5 минут, решил лечь спать и проснуться сегодня пораньше и доделать успеть. В итоге, с 7 утра уже часов 5, как слепой котенок наугад, идеи все кончились и гугл тоже) А так работает! Еще раз спасибо!
Внутренние функции SQL типо max, min генерируют имена для колонок наподобие max_weight.
Уверен, что если написать так, то тоже заработает
Ваш запрос генерирует новую таблицу, а не просто забирает пачку записей из существующих, поэтому нужно либо явно задавать имя колонки, либо понимать логику генерирования имён новых колонок в зависимости от внутренних функций SQL
спасибо за пояснения!