在前面的《使用QT操作sqlite(1)》中,我们简单介绍了在QT5中如何通过其内置的驱动与sqlite建立连接,在debug信息中显示连接信息和数据库内的信息。这里我们开始使用QT中的控件来显示数据库中的数据信息。
一、数据显示原理介绍
在QT里面对于数据库的数据处理分为三部分或者说三个步骤:
1、准备好数据连接:保证通过数据对象能够连接数据源(数据库服务器或数据库文件)成功。这个我们在上一篇博文已经做了介绍,这里不重复。
2、装载数据到临时表:一般是将数据库中的表单通过QAbstractItemModel(如:QSqlTableModel、QSqlQueryModel、QSqlRelationalTableModel)的settable方法来装载到它的一个临时table中,代码常常为:model->settable(“tb1”),如此数据库中的tb1就被装载到了临时表中了。
3、将临时表中的数据显示在QAbstractItemView类(如:QListView、 QTableView、 QTreeView)中,我们常常通过各种view的setModel和上面的数据源model进行绑定,这样我们就可以在view中显示数据了。
通过上述三个步骤,我们就可以批量操作和显示数据了,下面我们来逐个看看如何显示。
二、在控件中显示
1、在tableView中显示
代码如下:
QSqlTableModel *model=new QSqlTableModel(this);
model->setTable("product");
model->select();
ui->tableView->setModel(model);
1、在Commbox中显示
QSqlQueryModel *model=new QSqlQueryModel(this);
query.exec("select products from product");
model->setQuery(query);
ui->comboBox->setModel(model);
通过query来获取数据的时候一定要注意query与数据库关联,否则会发生无法显示数据的情况。
关联的方法请参考我的博文《如何解决QSqlQuery::exec: database not open》