天天看点

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);

           
Qt

继续阅读