QSqlTablelModel не может найти SQL представление, но QSqlQuery может - PullRequest
1 голос
/ 14 марта 2020

Я хочу использовать QSqlTableModel, так как это кажется проще в использовании. Однако он не находит мои таблицы.

qDebug() << "connecting";
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName(dbHostName);
db.setPort(dbPort);
db.setUserName(dbUserName);
db.setPassword(dbPassword);

// Connect to database sys to get some info to test (basic communication)
db.setDatabaseName("sys");

// Check if opened and if so get some data
if(db.open()){
    qDebug() << "DB succesfully opened";
} else {
    qDebug() << "DB failed to open";
    return;
}

QSqlTableModel* runsSimulationViewModel = new QSqlTableModel(); 
runsSimulationViewModel->setTable("results.runs_simulation_view");

qDebug() << runsSimulationViewModel->lastError(); 

// ОШИБКА: QSqlError ("", "Невозможно найти результаты таблицы.runs_simulation_view", "")

QSqlQuery anotherQuery;
anotherQuery.prepare("SELECT * FROM results.runs_simulation_view");

if(!anotherQuery.exec()) {
    qDebug() << anotherQuery.lastError();
} else {
    anotherQuery.next();
    qDebug() << anotherQuery.value("simulation_id").toInt(); 

// Печатает «3», которое является первым значением этого поля в таблице

}

QSqlQuery работает, но QSqlTableView не может найти это (SQL) view (а также без таблиц).

Что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...