QSqlQueryModel的实例操作
QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作。
1. #ifndef DATABASE_H
2.
3. #define DATABASE_H
4.
5. #include <QSqlDatabase>
6. #include <QSqlQuery>
7.
8. static bool createConnection()
9. {
10. QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);
11. db.setDatabaseName(“database.db”);
12. if(!db.open()) return false;
13. QSqlQuery query;
14. query.exec(“create table student (id int primary key, name vchar)”);
15. query.exec(“insert into student values (0,’yafei0′)”);
16. query.exec(“insert into student values (1,’yafei1′)”);
17. query.exec(“insert into student values (2,’yafei2′)”);
18. return true;
19. }
20. #endif // DATABASE_H
1. #include <QtGui/QApplication>
2. #include “widget.h”
3. #include “database.h”
4. int main(int argc, char *argv[])
5. {
6. QApplication a(argc, argv);
7. if(!createConnection())
8. return 1;
9. Widget w;
10. w.show();
11. return a.exec();
12. }
1. void Widget::on_pushButton_clicked()
2. {
3. QSqlQueryModel *model = new QSqlQueryModel;
4. model->setQuery(“select * from student”);
5. model->setHeaderData(0, Qt::Horizontal, tr(“id”));
6. model->setHeaderData(1, Qt::Horizontal, tr(“name”));
7. QTableView *view = new QTableView;
8. view->setModel(model);
9. view->show();
10. }
1. #include <QSqlQueryModel>
2. #include <QTableView>
1. int column = model->columnCount(); //获得列数
2. int row = model->rowCount(); // 获得行数
3. QSqlRecord record = model->record(1); //获得一条记录
4. QModelIndex index = model->index(1,1); //获得一条记录的一个属性的值
5. qDebug() << “column num is:” << column << endl
6. << “row num is:” << row << endl
7. <<”the second record is:” << record << endl
8. << “the data of index(1,1) is:”<< index.data();
1. #include <QSqlRecord>
2. #include <QModelIndex>
3. #include <QDebug>
1. QSqlQuery query = model->query();
2. query.exec(“select name from student where id = “);
3. query.next();
4. qDebug() << query.value(0).toString();
1. void Widget::on_pushButton_clicked()
2. {
3. QSqlQueryModel *model = new QSqlQueryModel;
4. model->setQuery(“select * from student”);
5. model->setHeaderData(0, Qt::Horizontal, tr(“id”));
6. model->setHeaderData(1, Qt::Horizontal, tr(“name”));
7. QTableView *view = new QTableView;
8. view->setModel(model);
9. view->show();
10.
11. QSqlQuery query = model->query();
12. query.exec(“insert into student values (10,’yafei10′)”);
13. //插入一条记录
14. }
1. void Widget::on_pushButton_clicked()
2. {
3. QSqlQueryModel *model = new QSqlQueryModel;
4. model->setQuery(“select * from student”);
5. model->setHeaderData(0, Qt::Horizontal, tr(“id”));
6. model->setHeaderData(1, Qt::Horizontal, tr(“name”));
7. QTableView *view = new QTableView;
8. view->setModel(model);
9. view->show();
10. QSqlQuery query = model->query();
11. query.exec(“insert into student values (20,’yafei20′)”);
12. //插入一条记录
13. model->setQuery(“select * from student”); //再次查询整张表
14. view->show(); //再次进行显示,这句也可以不写
15. }
QSqlQueryModel的实例操作的更多相关文章
- Qt数据库 QSqlTableModel实例操作(转)
本文介绍的是Qt数据库 QSqlTableModel实例操作,详细操作请先来看内容.与上篇内容衔接着,不顾本文也有关于上篇内容的链接. Qt数据库 QSqlTableModel实例操作是本文所介绍的内 ...
- [转]使用Xcode 4发布App 实例操作
使用xcode 4发布app 实例操作是本文介绍的内容,不多说,我们直接进入话题. 1.iOS Provisioning Portal 和iTunes Connect 没有变,下载与安装.mobile ...
- Flashback Drop实例操作
1.Flashback DropFlashback Drop 是从Oracle 10g 开始出现的,用于恢复用户误删除的对象(包括表,索引等), 这个技术依赖于Tablespace Recycle B ...
- 058——VUE中vue-router之实例操作新闻列表单页面应用与路由别名的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 040——VUE中组件之组件间的数据参props的使用实例操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 034——VUE中表单控件处理之使用vue控制radio表单的实例操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php5.4以上 mysqli 实例操作mysql 增,删,改,查
<?php //php5.4以上 mysqli 实例操作mysql header("Content-type:text/html;charset=utf8"); $conn ...
- [Sqlite]-->嵌入式数据库事务理解以及实例操作
引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2,嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 SQLite 事务(Tran ...
- 每天一个JavaScript实例-操作元素定位元素
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
随机推荐
- (二)学习MVC之实现用户注册功能
学习地址:http://www.cnblogs.com/mzwhj/archive/2012/10/22/2720089.html 本文和学习地址不一样的地方是我自己添加了一些简单的注释和理解. 1. ...
- 如何在网页中显示pdf
用如下的html代码即可(例子): <div class="postBody"> <div id="cnblogs_post_body"> ...
- 【Linux.Python】Python进程后台启动
嗯,比较忧伤. 前几天写了个tornado,启动了,很开心,后来每天要用时都发现it是kill掉的.好吧,是我太蠢啦.百度了下资料 python的启动方式: 1 python yourfile.py ...
- Action 操作
当鼠标移动到图片文件夹的时候,将有一些button显示 当鼠标移开这个文件夹,那些button隐藏了起来 display属性的变化 1.可以使用Js改变属性来操作 暂未验证,待时间. 2.可以使用Ac ...
- P、NP及NPC问题
关于计算理论的一些概念 —判定问题和最优化问题 —归约 —多项式时间 —抽象问题 —形式语言体系 NPC证明 —一个问题转换为判定问题 —说明问题是NP —一个NPC问题规约到这个问题 —只需要规约到 ...
- 怎样让你的代码更好的被JVM JIT Inlining
好书推荐:Effective Java中文版(第2版) JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining).方法内联可以省掉方法栈帧的创建,方法内联还使让JIT编 ...
- SQL2005查询所有表的大小
IF NOT EXISTS (SELECT * FROM [tempdb].sys.objects WHERE object_id = OBJECT_ID(N'[tempdb].[dbo].[tabl ...
- web.xml(spring/spring mvc/hibernate)
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" ...
- 知方可补不足~SQL数据库用户的克隆,SQL集群的用户同步问题
我们知道在为sqlserver建立功能数据库时,通过会为库再建立一个登陆名,而这个登陆名时,只用来管理这个数据库,这是安全的,正确的.
- 剑指OFFER之复杂链表的复制(九度OJ1524)
题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点). 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一 ...