QT(22)-数据库-QSqlQuery-QSqlQueryModel-QSqlTableModel 区别-示例源码

   1.区别

   2.实例


 1.区别

            QSqlQuery 可以用来执行SQL语句和获得执行结果的。

           QSqlQueryModel 它从查询QSqlQueryModel获取数据。可以方便的用于在QListView, QTableView, QTreeView等各种view上展示数据。但它是只读的,不能编辑

           QSqlTableMode继承于QSqlQueryModel,与QSqlQueryModel功能相似。比QSqlQueryModel的限制在于不能是任意sql语句,只是对单个数据表操作。拓展在于在各种view上展示表格数据的同时,还允许用户进行编辑操作


2.实例

        以查询表: 学号(int) 姓名(QString) 课程(QString)为例

      QSqlQuery 、QSqlQueryModel、QSqlRelationalTableModel类的使用。

1.QSqlQuery

              

   //1.创建变量

         QSqlQuery m_query (dbconn);

        m_query.exec("select * from student");

        int m_studentId;

        QString str_studentName;

        QString str_studentClassName;

  //2.变量结果显示

        while(m_query.next())

       {

            m_studentId = m_query.value(0).toInt();

            str_studentName = m_query.value(1).toString();

            str_studentClassName= m_query.value(2).toString();

          }

 

 

2.QSqlQueryModel QSqlQueryModel *model = new QSqlQueryModel(this);

model->setQuery("select * from student");

model->setHeaderData(0, Qt::Horizontal, tr("学号"));

model->setHeaderData(1, Qt::Horizontal, tr("姓名"));

model->setHeaderData(2, Qt::Horizontal, tr("课程"));

QTableView *view = new QTableView(this);

view->setModel(model);

 

 

3.QSqlRelationalTableModel

QSqlRelationalTableModel*model = new QSqlRelationalTableModel(this);

model->setTable("student");

  model->setRelation(2, QSqlRelation("course", "id", "name"));

    model->select();

    QTableView *view = new QTableView(this);

view->setModel(model);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值