gpt4 book ai didi

c++ - 加载和显示数据(QSqlTableModel)

转载 作者:行者123 更新时间:2023-11-28 02:41:01 24 4
gpt4 key购买 nike

我正在尝试从 ODBC 源 (informix db) 加载和显示数据。我可以创建并打开连接。但是我在使用 QSqlTableModel 时遇到了一些问题。下面的代码编译和运行没有错误,但不显示任何数据。我表中的列显示在 QTableView 中。 (1 和 3)当我使用 QSqlQueryModel (2) 时,我从我的表中获取数据,因此连接有效并且我在正确的数据库上。

有没有人知道我做错了什么或者我必须做什么才能用 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();

最佳答案

这段代码工作正常。要知道究竟发生了什么,我建议您查看 model->select();。如果它返回 false,那么您应该调用 lastError() 方法并获取人类可读的错误字符串。

关于您当前的问题的几句话。不幸的是,我以前没有看到这个错误,但我可以从俄罗斯论坛给你解决方案,也许它对你的研究有帮助。

链接:http://www.forum.crossplatform.ru/lofiversion/index.php/t3501.html

解决方案:尝试设置仅转发查询:

model->query().setForwardOnly(true);

或者这个

QSqlQuery q;
q.prepare( ... );
q.setForwardOnly( true );
model->setQuery( q );

希望对您有所帮助。

关于c++ - 加载和显示数据(QSqlTableModel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25994565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com