一、SQL模型的类
模型/视图结构:进行数据和界面的分离。
模型/视图结构分为三部分:
1、模型((model) :与数据源通信,并为其他部件提供接口。与底层的数据打交道。
2、视图(view):从模型中获取用来引用数据条目的模型索引。与显示打交道。
3、代理(delegate):负责绘制数据条目。
当一个项目被编辑,委托与模型直接利用模型索引进行通信。各个部件之间使用信号和槽的方式进行通信。
二、qt核心:
1、信号与槽
2、事件——鼠标事件、键盘事件、重绘事件、定时器事件
3、对象树
三、qt界面:
1、样式表
2、布局管理器
3、资源文件
三、QSqlQuery、QSqlQueryModel、QSqITableModel的区别.
1、 QSqlQuery
可以用来执行SQL语句和获得执行结果的。
2、QSqlQueryModel
提供了一个sql查询结果的只读数据模型。它从查询QSqIlQueryModel获取数据。可以方便的用于在QListView, QTableView,QTreeView等各种view上展示数据。但它是只读的,不能编辑。
3、QsqITableMode
继承于QSqlQueryModel,与QSqlQueryModel功能相似。比QSqlQueryModel的限制在于不能是任意sql语句,只是对单个数据表操作。拓展在于在各种view上展示表格数据的同时,还允许用户进行编辑操作。
四、new一个对象
用法
(1)、在头文件创建的类下进行声明,未定义,不占空间放于私有private:下。
QSqlQueryModel *model;
在源文件的构造函数中进行定义,分配空间。
model=new QSqlQueryModel(this);
(2)、直接定义和声明,如果在源文件的构造函数中,生命周期到析构函数执行。此时位于构造函数外的函数无法使用生成的对象。
QSqlQueryModel *model=new QSqlQueryModel;
五、QSqlQueryModel类常用函数。
为SQL的结果集提供了一个只读的数据模型。
1、setQuery():设置查询语句。用法: model->setQuery("select * from student");
2、Query():设置查询语句.
3、Record():获取记录
(1)、单个记录的获取与输出
(2)、全部记录的获取与输出
QSqlRecord record =model->record(1);//获得第一条记录
qDebug() <<"the second record is:"<<record<<Qt::endl;
4、 Rowcount():记录的行数。用法: int row =model->rowCount();
5、columnCount():记录的列数。用法:int column =model->columnCount();//获得列数
6、 lndex():指定记录的指定字段的索引工.
7、Clear():清空结果集
.8、setHeaderData():设置表头
model->setHeaderData(0,Qt::Horizontal,tr("id"));
model->setHeaderData(1,Qt::Horizontal,tr("name"));
l六、QSqlTableModel函数
提供了一个可读写的数据模型用于操作表,例如修改,插入,删除,查询,和排序;
1、settable()//指定数据库表rowCount ()/返回行数. columnCount ()返回列数· removeColumns()lI删除列
model_table->setTable("student"); //重新关联表
"student"相当于select * from student
2、submitAll (),I提交所有被修改的数据,然后修改的数据被保存在数据库中
3、revertAll ()/I撤销所有的修改 ps:修改提交和确认删除后无法在撤销
4、setFilter()l筛选,相当于SQL中的WHERE语句
5、排序
(1)、升序
model_table->setSort(0,Qt::AscendingOrder);
model_table->select();
(2)、降序
model_table->setSort(0,Qt::DescendingOrder);
model_table->select();
使用的数据库SQL