её можно не выводить в консоль, а отобразить в TableWidget, но я хочу отобразить именно в консоле)
query = QSqlQuery(db);
query.exec("SELECT * FROM country;");
row = query.size();
col = query.record().count();
QDebug cout = qDebug().nospace();
for (int i = 0; i < row; i++) {
query.next();
for (int j = 0; j < col; j++)
cout << qPrintable(query.value(j).toString()) << " ";
cout << '\n';
}
Я имел ввиду что нет ли другого способа, кроме как того что я описал ?
На гитхабе где-то видел библиотеку, которая рисует в консоль красивую таблицу из символов
Я тоже видел, но если не ошибаюсь то там грамоздкая структура
а чем принципиально твой вариант не устраивает?
Он меня устраивает, просто хотел спросить нет ли лучшего решение этой задачи
я думаю, все равно принципиально все придет к аналогичному коду ну т.е. найдешь какое-то решение в виде готовой либы/исходников, залезешь внутрь, а там принципиально тоже самое будет
вот size использовать может не стоит Returns the size of the result (number of rows returned), or -1 if the size cannot be determined or if the database does not support reporting information about query sizes т.е. упоминают, что не все драйвера БД возвращают актуальный size
А что тогда в замен его, если я хочу к примеру указывать колонку по номеру столбца и ряда
счетчик можно query = QSqlQuery(db); query.exec("SELECT * FROM country;"); quint8_t columns=query.record().count(); if (query.first()) { quint16 row=0; do { row++; // теперь есть актуальный row ... // твой код по выводу } while (query.next()); } но это не парадигма, если ты уверен, что твоя база возвращает QSqlQuery::size() и ты не предполагаешь переползать на другую базу, в отношении которой есть сомнения, то твой код вполне жизнеспособный
А в каком случае БД не вернёт size ? Как я понимаю то это произойдёт тогда когда в ней ничего нет ?
ну я же цитату привел кьютовцы упоминают косвенно, что не все БД на это способны
в моем примере row++ перемети в конец цикла do, если будешь юзать в блокноте писал, косячнул, в сообщении своем щас поправлю
Обсуждают сегодня