无法在MySql数据库的C ++ QTableView中显示数据QSqlQueryModel

时间:2015-11-25 18:34:29

标签: c++ mysql qtableview

我不知道这个例子发生了什么。

我的联系还可以。

查询结果正常(请参阅下面的应用程序输出)...但我的qtableview为空。

results screen with 9 empty lines

应用程序输出显示9行,这些行是我表中的正确结果。 rowCount = 9 ...但是tableview完全是空的。

#include "pedidos.h"
#include "ui_pedidos.h"

Pedidos::Pedidos(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Pedidos)
{
    ui->setupUi(this);

    Login conn;

    if(!conn.connOpen())
       ui->label_pedidos_conn->setText("Falha na conexão ao Database");
    else
       ui->label_pedidos_conn->setText("Database Ok");

}

Pedidos::~Pedidos()
{
    delete ui;
}

void Pedidos::on_pushButton_load_pedidos_clicked()
{
    Login conn;
    QSqlQueryModel *modal=new QSqlQueryModel();
    QTableView *view = new QTableView;

    conn.connOpen();

    QSqlQuery *qry=new QSqlQuery(conn.mydb);

    qry->prepare("SELECT id_pedido,id_user FROM pedido WHERE status=0");
    qry->exec();
    modal->setQuery(*qry);

    modal->setHeaderData(0, Qt::Horizontal, "Pedido");
    modal->setHeaderData(1, Qt::Horizontal, "Usuário");

    ui->tableView_pedidos->setModel(modal); // empty

    view->setModel(modal);  // second window
    view->show();           // doesn´t work too ( empty )

    while(qry->next()){

        QString usuario = qry->value(0).toString();
        qDebug() << "id:" << usuario;
    }

    conn.connClose();
    qDebug() << (modal->rowCount());

}

我的应用程序输出在这里:

QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
Database Ok
name: "124"
name: "125"
name: "126"
name: "127"
name: "128"
name: "129"
name: "131"
name: "225"
name: "308"
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
9

1 个答案:

答案 0 :(得分:1)

你在那里调试的这段代码是多余的,并且在tableView可以使用它来获取数据之前,conn-&gt; connClose()il关闭数据库。

while(qry->next()){
    QString usuario = qry->value(0).toString();
    qDebug() << "id:" << usuario;
}
conn.connClose(); <---- remove this line!!!
qDebug() << (modal->rowCount());