重庆好网互联/上海搜索优化推广
QT操作SQLite数据库_界面方式_增删改查
通过QT SQL模型类-表格模型(QSqlTableModel)实现,通过绑定Table View表格控件后,直接可以修改表格内容,点击提交,自动同步数据库的更新,操作非常方便。
model->setEditStrategy(QSqlTableModel::OnManualSubmit);//编辑策略,所有改变都会在模型中进行缓存,直到调用submiAll()或者reverAll函数才生效
// model->setEditStrategy(QSqlTableModel::OnFieldChange);//编辑策略,所有对模型改变都会立即应用到数据库
// model->setEditStrategy(QSqlTableModel::OnRowChange);//编辑策略,对一条记录的改变在用户选择另外一条记录时被应用
核心代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql/QSqlTableModel>
#include <QMessageBox>
#include <QSqlError>
//by txwtech
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);model = new QSqlTableModel(this);model->setTable("student");//设置需要查询的数据库中 student表,main.cpp调用createConn,创建默认连接model->setHeaderData(0,Qt::Horizontal,tr("学号"));model->setHeaderData(1,Qt::Horizontal,tr("姓名"));model->setHeaderData(2,Qt::Horizontal,tr("年龄"));model->select();//开始查询model->setEditStrategy(QSqlTableModel::OnManualSubmit);//编辑策略,所有改变都会在模型中进行缓存,直到调用submiAll()或者reverAll函数才生效// model->setEditStrategy(QSqlTableModel::OnFieldChange);//编辑策略,所有对模型改变都会立即应用到数据库// model->setEditStrategy(QSqlTableModel::OnRowChange);//编辑策略,对一条记录的改变在用户选择另外一条记录时被应用ui->tableView->setModel(model);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_submit_modify_clicked()
{model->database().transaction();//开始事务操作if(model->submitAll()){if(model->database().commit()){QMessageBox::information(this,tr("表格模型"),tr("数据修改成功"));}else{model->database().rollback();//回滚QMessageBox::warning(this,tr("表格模型"),tr("数据库错误:%1").arg(model->lastError().text()),QMessageBox::Ok);}}
}void MainWindow::on_pushButton_cancel_modify_clicked()
{model->revertAll();
}void MainWindow::on_pushButton_query_clicked()//查询
{QString name=ui->lineEdit_key_words->text();model->setFilter(QString("name='%1'").arg(name));model->select();
}void MainWindow::on_pushButton_query_show_all_clicked()//查询所有表
{model->setTable("student");model->setHeaderData(0,Qt::Horizontal,tr("学号"));model->setHeaderData(1,Qt::Horizontal,tr("姓名"));model->setHeaderData(2,Qt::Horizontal,tr("年龄"));model->select();
}void MainWindow::on_pushButton_sort_asc_clicked()
{model->setSort(0,Qt::AscendingOrder);//按第0列升序排列,就是id栏model->select();
}void MainWindow::on_pushButton_sort_desc_clicked()
{model->setSort(0,Qt::DescendingOrder);//按第0列升序排列,就是id栏model->select();
}void MainWindow::on_pushButton_delete_row_clicked()//删除操作
{int selectRow=ui->tableView->currentIndex().row();model->removeRow(selectRow);int ok=QMessageBox::warning(this,tr("提示"),tr("确定删除吗?"),QMessageBox::Yes,QMessageBox::No);if(ok==QMessageBox::No){model->revertAll();}else{model->submitAll();model->select();}}void MainWindow::on_pushButton_add_clicked()
{int rowNum=model->rowCount();int id=10;model->insertRow(rowNum);model->setData(model->index(rowNum,0),id);model->submitAll();model->select();
}
项目代码:
QT操作SQLite数据库_界面方式_增删改查.rar-QT文档类资源-CSDN下载QT操作SQLite数据库_界面方式_增删改查.rar参考:https://txwtech.blo更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86341046