Qt学习笔记-QSqlModel的事物操作
程序运行截图如下:
代码如下:
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的事物操作相关推荐
- Qt学习笔记,Qt程序架构设计要旨
Qt学习笔记,Qt程序架构设计要旨 时间过得很快,转眼学习Qt已经有一个多月了,对Qt的学习也在不断的深入中.自己手下的code也很多了,不过不得不说,还有很多的部分没有接触过,比如网络编程,2D,3 ...
- Qt学习笔记之MySQL数据库
一.MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQ ...
- Qt学习笔记之数据库
一.数据库简介 1.1.数据和数据库(DB) 用计算机进行数据处理,首先就要把信息以数据形式存储到计算机中,故数据是可以被计算机接受和处理的符号.根据所表示的信息特征不同,数据有不同的类别,如数字.文 ...
- Qt学习笔记之文件处理
Qt提供了通用的文件处理类QFile和处理文本的QTextStream类和处理二进制数据的QDataStream类,这些流操作极大地方便了对文件的督促存储.对文件信息和目录进行操作的类是QfileIn ...
- Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4)...
Qt学习笔记,再次分析EVA源码之后得出的结论-QListView,QListViewItem(Qt3);Q3ListView,Q3ListViewItem(Qt4) 今天再次分析了Eva的源码,也看 ...
- QT学习笔记(十一):QString类
QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...
- QT学习笔记(八):顺序容器和关联容器
QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...
- JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询
JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...
- Qt 学习笔记(5)绘图 五子棋游戏
在上一篇博客C++ Qt学习笔记(4)绘图中介绍了Qt中的绘图方法,基于上一篇的博客的知识,使用QPainter设计一个五子棋的棋盘,后续会完成五子棋的游戏设计. 1. 棋盘的设计 首先需要绘制棋盘的 ...
最新文章
- OpenCV支持的图像格式
- html广告位代码,一段CSS代码让你的广告位“立起来”
- Silverlight实例教程 - Navigation导航框架系列汇总
- LiveVideoStackCon深圳-透过业务看QoE
- PHP IE中下载附件问题
- linux下关于密码复杂度设置
- 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
- PHP面向对象之继承和多态
- 【算法工程师】华为技术面面试记录
- 电脑如何分盘win10_如何给win10电脑系统盘分区?
- matlab复数的使用,关于MATLAB在复数方面的应用
- 关于AMD 245支持DDR3内存的问题
- [LOJ#6198]谢特[后缀数组+trie+并查集]
- JSD-2204-Java语言基础-八大基本数据类型-Day02
- ESP8266 AT指令
- 中国移动MM7 API用户手册(五)
- 密钥安全性讨论之密钥分层管理结构
- 建筑外墙平台广告牌的室外用丙烯酸聚氨酯防腐面漆 漆膜颜色多样
- python 等深分箱 等宽分箱结合二分箱的数据分析
- Animation,Animator学习