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


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

    通过QT SQL模型类-表格模型(QSqlTableModel)实现,通过绑定Table View表格控件后,直接可以修改表格内容,点击提交,自动同步数据库的更新,操作非常方便。

     model->setEditStrategy(QSqlTableModel::OnManualSubmit);//编辑策略,所有改变都会在模型中进行缓存,直到调用submiAll()或者reverAll函数才生效
       // model->setEditStrategy(QSqlTableModel::OnFieldChange);//编辑策略,所有对模型改变都会立即应用到数据库
       // model->setEditStrategy(QSqlTableModel::OnRowChange);//编辑策略,对一条记录的改变在用户选择另外一条记录时被应用

     核心代码:

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include
    4. #include
    5. #include
    6. //by txwtech
    7. MainWindow::MainWindow(QWidget *parent)
    8. : QMainWindow(parent)
    9. , ui(new Ui::MainWindow)
    10. {
    11. ui->setupUi(this);
    12. model = new QSqlTableModel(this);
    13. model->setTable("student");//设置需要查询的数据库中 student表,main.cpp调用createConn,创建默认连接
    14. model->setHeaderData(0,Qt::Horizontal,tr("学号"));
    15. model->setHeaderData(1,Qt::Horizontal,tr("姓名"));
    16. model->setHeaderData(2,Qt::Horizontal,tr("年龄"));
    17. model->select();//开始查询
    18. model->setEditStrategy(QSqlTableModel::OnManualSubmit);//编辑策略,所有改变都会在模型中进行缓存,直到调用submiAll()或者reverAll函数才生效
    19. // model->setEditStrategy(QSqlTableModel::OnFieldChange);//编辑策略,所有对模型改变都会立即应用到数据库
    20. // model->setEditStrategy(QSqlTableModel::OnRowChange);//编辑策略,对一条记录的改变在用户选择另外一条记录时被应用
    21. ui->tableView->setModel(model);
    22. }
    23. MainWindow::~MainWindow()
    24. {
    25. delete ui;
    26. }
    27. void MainWindow::on_pushButton_submit_modify_clicked()
    28. {
    29. model->database().transaction();//开始事务操作
    30. if(model->submitAll())
    31. {
    32. if(model->database().commit())
    33. {
    34. QMessageBox::information(this,tr("表格模型"),tr("数据修改成功"));
    35. }
    36. else
    37. {
    38. model->database().rollback();//回滚
    39. QMessageBox::warning(this,tr("表格模型"),tr("数据库错误:%1").arg(model->lastError().text()),QMessageBox::Ok);
    40. }
    41. }
    42. }
    43. void MainWindow::on_pushButton_cancel_modify_clicked()
    44. {
    45. model->revertAll();
    46. }
    47. void MainWindow::on_pushButton_query_clicked()//查询
    48. {
    49. QString name=ui->lineEdit_key_words->text();
    50. model->setFilter(QString("name='%1'").arg(name));
    51. model->select();
    52. }
    53. void MainWindow::on_pushButton_query_show_all_clicked()//查询所有表
    54. {
    55. model->setTable("student");
    56. model->setHeaderData(0,Qt::Horizontal,tr("学号"));
    57. model->setHeaderData(1,Qt::Horizontal,tr("姓名"));
    58. model->setHeaderData(2,Qt::Horizontal,tr("年龄"));
    59. model->select();
    60. }
    61. void MainWindow::on_pushButton_sort_asc_clicked()
    62. {
    63. model->setSort(0,Qt::AscendingOrder);//按第0列升序排列,就是id栏
    64. model->select();
    65. }
    66. void MainWindow::on_pushButton_sort_desc_clicked()
    67. {
    68. model->setSort(0,Qt::DescendingOrder);//按第0列升序排列,就是id栏
    69. model->select();
    70. }
    71. void MainWindow::on_pushButton_delete_row_clicked()//删除操作
    72. {
    73. int selectRow=ui->tableView->currentIndex().row();
    74. model->removeRow(selectRow);
    75. int ok=QMessageBox::warning(this,tr("提示"),tr("确定删除吗?"),QMessageBox::Yes,QMessageBox::No);
    76. if(ok==QMessageBox::No)
    77. {
    78. model->revertAll();
    79. }
    80. else
    81. {
    82. model->submitAll();
    83. model->select();
    84. }
    85. }
    86. void MainWindow::on_pushButton_add_clicked()
    87. {
    88. int rowNum=model->rowCount();
    89. int id=10;
    90. model->insertRow(rowNum);
    91. model->setData(model->index(rowNum,0),id);
    92. model->submitAll();
    93. model->select();
    94. }

    项目代码:

    QT操作SQLite数据库_界面方式_增删改查.rar-QT文档类资源-CSDN下载QT操作SQLite数据库_界面方式_增删改查.rar参考:https://txwtech.blo更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86341046

  • 相关阅读:
    重磅 | 死磕 Elasticsearch 8.X 方法论认知清单(2022年国庆更新版)
    全国降雨侵蚀力因子R值计算/土壤侵蚀计算
    设备树和uboot启动,kernel启动
    《设计模式之美》第四章 总结
    QT-地形3D
    Vue的路由
    极简c++(4)类的静态成员
    1-5年Java面试者必备:一线名企各专题面试笔记+java核心宝典pdf
    【软件工程】作业3
    Vue04(路由,无痕浏览,nodejs环境搭建,ElementUI简介)
  • 原文地址:https://blog.csdn.net/txwtech/article/details/126215486