Qt学习笔记-QSqlModel的事物操作
生活随笔
收集整理的這篇文章主要介紹了
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_Hmainwindow.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工作笔记-对connect的第五个参