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