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
#include
#include
//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