我想加載和顯示來自ODBC源(informix db)的數據。 我可以創建並打開連接。但是我有一些QSqlTableModel的問題。 以下代碼編譯並運行時沒有錯誤,但不顯示任何數據。我的表中的列顯示在QTableView中。 (1和3) 當我使用QSqlQueryModel(2)我從我的表中獲取數據,所以連接工作,我在正確的數據庫。加載和顯示數據(QSqlTableModel)
有沒有人知道我在做什麼錯誤或我必須做什麼來顯示我的數據與QTableView? 這是我第一次使用Qt。我在MinGW編譯器的windows下使用Qt,但使用MSVC的結果是一樣的。
this->_connection = QSqlDatabase::addDatabase("QODBC");
_connection.setDatabaseName("CargoSoft cs-entw");
_connection.open();
// 1.)
QSqlTableModel *model = new QSqlTableModel(this, _connection);
model->setTable("eakopf_t");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("mandant"));
model->setHeaderData(1, Qt::Horizontal, tr("positionsnummer"));
// 2.)
QSqlQueryModel queryModel;
queryModel.setQuery("SELECT * FROM eakopf_t");
QString mandant = queryModel.record(4).value("mandant").toString();
// 3.)
QTableView *view = new QTableView;
view->setModel(model);
//view->hideColumn(0); // don't show the ID
view->show();
據我所知,'_connection.open()'返回true? – Chernobyl 2014-09-23 12:24:28
是的,它返回true。 – user743414 2014-09-23 12:50:42
你的代碼(從文檔複製)是正常的,它的工作原理,所以檢查返回'model-> select();'。如果它返回false,那麼調用'lastError()'知道會發生什麼,但是如果它返回true,那麼我不知道這裏出了什麼問題 – Chernobyl 2014-09-23 13:08:43