程序运行截图如下:

代码如下:

connection.h

#ifndef CONNECTION_H
#define CONNECTION_H#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>static bool createConnection(){QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("my.db");if(!db.open()){QMessageBox::critical(NULL,"打开失败","不能建立连接.");return false;}QSqlQuery query;query.exec("create table student (id int primary key, ""name varchar, course int)");query.exec("insert into student values(1, '球球', 11)");query.exec("insert into student values(2, '腿腿', 11)");query.exec("insert into student values(3, '小美', 12)");query.exec("create table course (id int primary key, ""name varchar, teacher varchar)");query.exec("insert into course values(10, '数学', '王老师')");query.exec("insert into course values(11, '英语', '张老师')");query.exec("insert into course values(12, '计算机', '白老师')");return true;
}#endif // CONNECTION_H

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
class QSqlTableModel;namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private slots:void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_8_clicked();private:Ui::MainWindow *ui;QSqlTableModel *model;
};

main.cpp

#include "mainwindow.h"
#include <QApplication>#include "connection.h"int main(int argc, char *argv[])
{QApplication a(argc, argv);if(!createConnection())return 1;MainWindow w;w.show();return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QSqlQueryModel>
#include <QSqlTableModel>
#include <QSqlRelationalTableModel>
#include <QTableView>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);model=new QSqlTableModel(this);model->setTable("student");model->select();model->setEditStrategy(QSqlTableModel::OnManualSubmit);ui->tableView->setModel(model);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QString name=ui->lineEdit->text();model->setFilter(QString("name=%1").arg(name));model->select();
}void MainWindow::on_pushButton_2_clicked()
{model->setTable("student");model->select();
}void MainWindow::on_pushButton_3_clicked()
{model->database().transaction();if(model->submitAll()){if(model->database().commit()){QMessageBox::information(this,"tableModel","数据修改成功!");}}else{model->database().rollback();QMessageBox::warning(this,"tableModel",tr("数据库错误:%1").arg(model->lastError().text()));}
}void MainWindow::on_pushButton_4_clicked()
{model->revertAll();
}void MainWindow::on_pushButton_5_clicked()
{int rowNum=model->rowCount();int id=10;model->insertRow(rowNum);model->setData(model->index(rowNum,0),id);}void MainWindow::on_pushButton_6_clicked()
{int curRow=ui->tableView->currentIndex().row();model->removeRow(curRow);int ok=QMessageBox::warning(this,"删除当前行","你确定要删除?",QMessageBox::Yes,QMessageBox::No);if(ok==QMessageBox::No)model->revertAll();elsemodel->submitAll();
}void MainWindow::on_pushButton_7_clicked()
{model->setSort(0,Qt::AscendingOrder);model->select();
}void MainWindow::on_pushButton_8_clicked()
{model->setSort(0,Qt::DescendingOrder);model->select();
}

Qt学习笔记-QSqlModel的事物操作相关推荐

  1. Qt学习笔记,Qt程序架构设计要旨

    Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...

  2. Qt学习笔记之MySQL数据库

    一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...

  3. Qt学习笔记之数据库

    一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...

  4. Qt学习笔记之文件处理

    Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...

  5. Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...

    Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...

  6. QT学习笔记(十一):QString类

    QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...

  7. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  8. JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询

    JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...

  9. Qt 学习笔记(5)绘图 五子棋游戏

    在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...

最新文章

  1. OpenCV支持的图像格式
  2. html广告位代码,一段CSS代码让你的广告位“立起来”
  3. Silverlight实例教程 - Navigation导航框架系列汇总
  4. LiveVideoStackCon深圳-透过业务看QoE
  5. PHP IE中下载附件问题
  6. linux下关于密码复杂度设置
  7. 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
  8. PHP面向对象之继承和多态
  9. 【算法工程师】华为技术面面试记录
  10. 电脑如何分盘win10_如何给win10电脑系统盘分区?
  11. matlab复数的使用,关于MATLAB在复数方面的应用
  12. 关于AMD 245支持DDR3内存的问题
  13. [LOJ#6198]谢特[后缀数组+trie+并查集]
  14. JSD-2204-Java语言基础-八大基本数据类型-Day02
  15. ESP8266 AT指令
  16. 中国移动MM7 API用户手册(五)
  17. 密钥安全性讨论之密钥分层管理结构
  18. 建筑外墙平台广告牌的室外用丙烯酸聚氨酯防腐面漆 漆膜颜色多样
  19. python 等深分箱 等宽分箱结合二分箱的数据分析
  20. Animation,Animator学习

热门文章

  1. 自定义的网页加密与解密
  2. 智器SmartQ T7实体店试用体验
  3. 关于硬盘运行在不同模式下的疑难解答
  4. 如何开发ORACLE存储过程
  5. 采用这套全方位监控方案,立刻规避90%采购风险(附体验demo)
  6. 一般是一个较为复杂的 飞鸽传书 对象
  7. 推荐程序员的求爱技巧
  8. 如何应对互联网界的奇葩面试题!
  9. mysql如何计算qps_如何计算MySQL中的QPS及TPS指标
  10. Python中两个浮点数的简单运算