【问题标题】:Populating QTableWidget with database values使用数据库值填充 QTableWidget
【发布时间】:2015-05-07 04:10:28
【问题描述】:

在我的 GUI 应用程序中,我想用 Oracle DB 中的值填充 QTableWidget。我知道使用QTableViewQSqlQueryModel 更简单。但我想稍后逐项访问数据,因此我想使用QTableWidget

我已成功建立与我的 oracle 数据库的连接,用于填充数据的代码 sn-p 是 --

QSqlQuery myquery("select SL_NO, NAME, AGE from EMPLOYEE");

ui->tableWidget->setColumnCount(myquery.record().count());
ui->tableWidget->setRowCount(myquery.size());

int index = 0;
while(myquery.next())
{
    ui->tableWidget->setItem(index,0,new QTableWidgetItem(myquery.value(0).toString()));
    ui->tableWidget->setItem(index,1,new QTableWidgetItem(myquery.value(1).toString()));
    ui->tableWidget->setItem(index,2,new QTableWidgetItem(myquery.value(2).toString()));
    index ++;
}

输出是--

我的代码有什么问题???我错过了什么???

【问题讨论】:

    标签: c++ qt4 qtablewidget


    【解决方案1】:

    我看到这种效果的唯一原因是 myquery.size() 在

    ui->tableWidget->setRowCount(myquery.size());

    返回 0 并且 myquery.next() 总是返回 false。

    如果 myquery.size() > 0 并且 myquery.value(0).toString() 将返回空字符串,您仍然会看到空行。

    所以我怀疑您的查询是否返回了您希望它返回的内容。 使用一些 qDebugs 来验证您从数据库中获得的数据。

    【讨论】:

    • 嗯,查询执行正常,没有错误(db.lasterror)
    • 我在 query.exec() 上设置了 if else 控制来查看错误,但是它来到了 qDebug 成功消息,即它没有来到包含 db.lasterror 的 else 子句
    • 这并不意味着你得到了价值。当数据库连接正常时,您会得到一个空结果。 EMPLOYEE 中什么都没有?
    • 你是对的..我也想说..在控制台/qdebug中查看查询的o / p的任何过程????
    • 可以直接在Oracle中执行这个查询吗?我对 Oracle 一无所知,但当我在终端中手动执行 SQLite 或 postgresql 查询时,它不止一次帮助了我。
    猜你喜欢
    • 2013-03-03
    • 2011-05-27
    • 2022-06-13
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2012-02-25
    相关资源
    最近更新 更多