Qt模块化笔记之sql——数据库模型视图
来源:互联网 发布:mysql数据库pdf 编辑:程序博客网 时间:2024/05/21 18:44
可以认为,模型是就像是人的灵魂,与”视图“的外表相同。只不过这个灵魂是虚的
视图一般使用QTableView来显示数据。
sql的模型类,与前面执行语句的效果相同,只是更加地方便地显示与操作数据库。使不懂sql语句的同学也能使用数据库。
下图是执行结果,上面的数据表是QSqlQueryModel的结果,不可编辑,而下面的表是QSqlTableModel的结果,可编辑提交
第一部分,只读模型QSqlQueryModel:
if(db.open()) { qDebug()<<"打开成功"; QSqlQueryModel *model = new QSqlQueryModel; model->setQuery("SELECT * FROM tb_books"); model->setHeaderData(0, Qt::Horizontal, tr("isbn")); model->setHeaderData(1, Qt::Horizontal, tr("book_name")); model->setHeaderData(2, Qt::Horizontal, tr("price")); QTableView *view = new QTableView(this); view->setModel(model); view->show();QString book_name= model->record(1).value("book_name").toString();//返回第一行字段为book_name的项 }
我们构建一个QSqlQueryModel 实例model,设置它的查询语句,然后用setHeaderData设置模型表格的水平标题,然后让它显示到QTableView中。
对于这个模型,我们可以使用它的record或data函数来访问其中的数据,它们的原型如下:
QSqlRecordrecord(int row) constvirtual QVariantdata(const QModelIndex & item, int role = Qt::DisplayRole) const
第二部分,读写表格模型QSqlTableModel
QSqlTableModel *model = new QSqlTableModel(this); model->setTable("tb_books"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->setFilter("isbn=4"); model->select(); model->setHeaderData(0, Qt::Horizontal, tr("isbn")); model->setHeaderData(1, Qt::Horizontal, tr("book_name")); model->setHeaderData(2, Qt::Horizontal, tr("price")); QTableView *view = new QTableView(this); view->setModel(model); view->hideColumn(0); // don't show the ID view->show();
QSqlTableModel与QSqlQueryModel有很大的不同,QSqlTableModel是在连接数据库后,用setTable函数设置要使用的表格的,setFilter设置过滤器,括号中是sql中的where语句省略后where后的部分,再用select()函数执行查询。然后setEditStrategy设置“编辑策略”,可用的方式如下:
QSqlTableModel有几个操作函数:
insertRecord();insertRow();insertRows();
removeRow(); removeRows();removeColumns();
revertAll();
可用于插入,删除,及提交所有更改。可见,这个模型基本拥有sql语句的大多功能
相关源码在http://pan.baidu.com/s/1tHLbf
- Qt模块化笔记之sql——数据库模型视图
- Qt模块化笔记之sql——连接数据库
- Qt模块化笔记之sql——执行sql语句
- Qt模块化笔记之sql——数据库错误捕捉与处理
- Qt模块化笔记之sql——前期准备
- Qt模块化笔记之sql——事务处理的实现
- Qt模块化笔记之sql——事务处理的实现
- Qt模块化笔记之Qt Widgets——日历类
- Qt模块化笔记之core——动画框架
- Qt模块化笔记之core——线程相关
- Qt模块化笔记之Qt_Quick——引入
- Qt模块化笔记之core——QXmlStreamReader的使用
- Qt模块化笔记之core——QXmlStreamWriter写XML
- Qt模块化笔记之core——容器类归纳
- Qt模块化笔记之core——事件QEvent
- Qt模块化笔记之core——容器类归纳
- Qt之模型/视图
- Qt之模型/视图
- FPGA烧写flash 坑爹的m25p80
- .iReport默认参数和变量的含义解析
- 更新SDK失败解决办法(Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml)
- ZoomableImageView
- Asp.Net页面生命周期
- Qt模块化笔记之sql——数据库模型视图
- 树节点级联选中
- Eclipse快捷键
- OutLook2013设置邮件签名
- 日常用命令
- poll() | 多路复用 I/O
- 列表元素
- Linux不同颜色文件类型/权限/属性
- Java中的国际化问题