您当前的位置: 首页 >  sql

txwtech

暂无认证

  • 4浏览

    0关注

    813博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

QT操作SQLite数据库_界面方式_增删改查

txwtech 发布时间:2022-08-07 19:02:59 ,浏览量:4

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

关注
打赏
1665060526
查看更多评论
立即登录/注册

微信扫码登录

0.0388s