Собственно сабж. Получаю пустой cmdUsers и 0 ошибок.
QSqlError dbError;
QSqlQuery query(db);
bool queryRes;
ui->cmbUsers->clear();
queryRes = query.exec("SELECT \"lstUsers\".\"ID\", \"lstUsers\".\"UserName\", \"lstUsers\".\"RealName\" FROM public.\"lstUsers\" ORDER BY \"lstUsers\".\"RealName\" ASC;");
if (queryRes) {
// QMessageBox::critical(this, "Проверка связи", dbError.text(), QMessageBox::Close);
while (query.next()) {
ui->cmbUsers->addItem(query.value(2).toString());
}
}else{
dbError = db.lastError();
QMessageBox::critical(this, "Ошибка", dbError.text(), QMessageBox::Close);
}
В табличке lstUsers содержится 4 записи.
Если приведенный запрос исполнять из pgAdmin'a - все работает.
Из qt соединение с БД устанавливается правильно, pgAdmin его показывает.
Включил в postgresql.conf log_statement=all - все вроде бы правильно
2010-06-23 10:46:38 GMTLOG: statement: select version()
2010-06-23 10:46:38 GMTLOG: statement: SET CLIENT_ENCODING TO 'UNICODE'
2010-06-23 10:46:38 GMTLOG: statement: SET DATESTYLE TO 'ISO'
2010-06-23 10:46:38 GMTLOG: statement: SELECT "lstUsers"."ID", "lstUsers"."UserName", "lstUsers"."RealName" FROM public."lstUsers" ORDER BY "lstUsers"."RealName" ASC;
Получается, программа вроде как запрос к серверу шлет, но не обрабатывает.
Какие причины могут быть, что комбобокс не заполняется? Или сервер как-то может возвращать пустой результат?
Запустил
C:\Qt\2010.02.1\qt\demos\sqlbrowser\release\sqlbrowser.exe
Драйвер в выпадающем списке отображается, соединение с БД устанавливается нормально, список таблиц отображается.
Однако:
1. При даблклике по таблице он говорит "Unable to find table "lstUsers"" (как и другие таблицы).
2. При щелчке правой кнопкой - Show schema - без ошибок, но таблица пустая.
3. Но!
SELECT "lstUsers"."ID", "lstUsers"."UserName", "lstUsers"."RealName" FROM public."lstUsers" ORDER BY "lstUsers"."RealName" ASC;
Корректный результат...
"На всякий случай" снес кьют, постгрес.
Поставил Постгрес, потом Кьют, откомпилировал плагин для PSQL.
Ничего не изменилось...
Куда дальше копать?