Доброго времени суток.
Работаю с БД PSQL через QTableView + QSqlQueryModel.
На view данные выводятся при запросах
model->setTable('table');
model->select();
Соединение с БД производится сл. образом:
db = QSqlDatabase::addDatabase("QPSQL");
if(!db.isValid()){
QString qs;
qs.append(tr("DLL драйверов для PostgreSQL не найдены:\n\n'%1;'").arg(db.lastError().text()));
qs.append(tr("\n\nDll должны располагаться по одному из путей : \n\n%1\n\n\n%2").arg(QApplication::libraryPaths()[0],QApplication::libraryPaths()[1]));
FATAL(qs);
return;
}
db.setHostName("localhost");
db.setDatabaseName("SHOP");
db.setUserName("postgres");
db.setPassword("7777777");
db.setPort(5432);
if (!db.open()){
FATAL(tr("Невозможно подключиться к указанной БД:\n\n%1::%2").arg(db.hostName(), db.databaseName()));
return;
}
В слоте для нажатия на кнопку стоит сл. код:
QSqlQuery sql(db);
sql.exe(tr("select * from categories"));
if(!sql.isActive())FATAL(tr("Not active"));
QString qs;
qs.append(tr("'%1'\n\n\nQuo=%2; \n'%3'")
.arg(sql.record().value(1).toString())
.arg(sql.numRowsAffected())
.arg(sql.lastError().driverText()));
if(sql.lastError().type() == QSqlError::NoError){
qs.append(tr("no error"));
}
FATAL(qs);
sql.clear();
Ежель запрос не корректный - пишет, что не isActive - тут все хорошо.
Никаких ошибок не выводится, если запрос корректный, но при этом и данных никаких не получается.
*ЗЫ: запрос создаётся и выполняется уже после соединения с базой, ессно.
Что не так?
С уважением, Олег.