当前位置:   article > 正文

QT连接SQLITE数据库:界面操作(增删改查)_qt增删改查

qt增删改查

一:widget.ui界面设计:

拖拽左侧Table View控件到页面中,在右侧将其objectName 设置为"tableView",目的是将其设置为表格显示view。

拖拽左侧Push Button控件到页面中,分别为: 增加,删除,确认,取消,查找五个按钮。在右侧将其objectName 分别设置为"ButtonAdd" ; "ButtonDel" ;   "ButtonSure" ;  "ButtonCancel" ; ButtonFind。

拖拽左侧Line Edit控件到页面中,在右侧将其objectName 设置为"lineEdit",目的是将其设置为搜索框。

二.连接SQLITE数据库

1.pro文件添加sql模块。

2.添加对应头文件

3.首先打印了 Qt 支持的数据库驱动。

4.然后使用 QSqlDatabase 添加了一个 QSQLITE 类型的数据库连接,打开了指定路径的数据库文件。

5.创建了一个 QSqlTableModel 对象 model,并设置了要操作的表为 dbTT。

6.将这个数据模型 model 绑定到 UI 中的 tableView 上,并设置编辑策略为手动提交修改。

7.启动程序查看连接情况。

//设置model的编辑模式,手动提交修改
model->setEditStrategy(QSqlTableModel::OnManualSubmit);

添加上述代码更改数据无法直接修改,需要点击确定按钮,才能实现对数据修改操作,可以注释掉这行代码,直接修改数据库(不需要点击确定按钮)。

三:增删改查功能实现。

widget.ui界面右上角,右键点击按钮,转到槽,选中clicked(),点击OK。

分别将五个按钮转到槽,自动在头文件生成代码。

1.增

添加头文件

#include <QSqlRecord>

QSqlRecord类提供了对数据库记录的访问和操作功能。

2.删

3.确定

4.取消

5.查

最后效果:

代码演示:
widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include "ui_widget.h"
  4. #include <QWidget>
  5. #include <QSqlDatabase>
  6. #include <QSqlError>
  7. #include <QSqlQuery>
  8. #include <QDebug>
  9. #include <QObject>
  10. #include <QSqlTableModel>
  11. #include <QSqlRecord>
  12. namespace Ui {
  13. class Widget;
  14. }
  15. class Widget : public QWidget
  16. {
  17. Q_OBJECT
  18. public:
  19. explicit Widget(QWidget *parent = 0);
  20. ~Widget();
  21. private slots:
  22. void on_ButtonAdd_clicked();
  23. void on_ButtonCancel_clicked();
  24. void on_ButtonDel_clicked();
  25. void on_ButtonFind_clicked();
  26. void on_ButtonSure_clicked();
  27. private:
  28. Ui::Widget *ui;
  29. QSqlTableModel *model;
  30. };
  31. #endif // WIDGET_H

widget.cpp

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QWidget>
  4. #include <QSqlDatabase>
  5. #include <QSqlError>
  6. #include <QSqlQuery>
  7. #include <QDebug>
  8. #include <QObject>
  9. #include <QSqlTableModel>
  10. Widget::Widget(QWidget *parent) :
  11. QWidget(parent),
  12. ui(new Ui::Widget)
  13. {
  14. ui->setupUi(this);
  15. //打印Qt支持的数据库驱动
  16. qDebug() << QSqlDatabase::drivers();
  17. //添加数据库
  18. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  19. //设置数据库
  20. db.setDatabaseName("E:/TestSqllite.db");//info.db是数据库名称
  21. //打开数据库
  22. if(!db.open())
  23. {
  24. qDebug()<<"不能连接"<<"connect to mysql error"<<db.lastError().text();
  25. return ;
  26. }
  27. else
  28. {
  29. qDebug()<<"连接成功"<<"connect to mysql OK";
  30. }
  31. //设置模型
  32. model = new QSqlTableModel(this);
  33. model->setTable("dbTT");//指定使用那个表
  34. //把model放在view上
  35. ui->tableView->setModel(model);
  36. model->select();
  37. //设置model的编辑模式,手动提交修改
  38. model->setEditStrategy(QSqlTableModel::OnManualSubmit);
  39. //设置数据库不允许修改
  40. //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  41. //修改表
  42. //model->setHeaderData(0,Qt::Horizontal,"ID");
  43. }
  44. Widget::~Widget()
  45. {
  46. delete ui;
  47. }
  48. void Widget::on_ButtonAdd_clicked()
  49. {
  50. //添加空记录
  51. QSqlRecord record = model->record();//获取空记录
  52. //获取行号
  53. int row = model->rowCount();
  54. model->insertRecord(row,record);
  55. }
  56. void Widget::on_ButtonCancel_clicked()
  57. {
  58. model->revertAll();
  59. model->submitAll();
  60. }
  61. void Widget::on_ButtonDel_clicked()
  62. {
  63. //获取选中的模型
  64. QItemSelectionModel *sModel = ui->tableView->selectionModel();
  65. //取出模型中的索引
  66. QModelIndexList list = sModel->selectedRows();
  67. //删除所有选中的行
  68. for(int i = 0 ; i<list.size();i++){
  69. model->removeRow(list.at(i).row() );
  70. }
  71. }
  72. void Widget::on_ButtonFind_clicked()
  73. {
  74. QString dataID = ui->lineEdit->text();
  75. QString str = QString("dataID = '%1' ").arg(dataID);
  76. model->setFilter(str);
  77. model->select();
  78. }
  79. void Widget::on_ButtonSure_clicked()
  80. {
  81. model->submitAll();
  82. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/946979
推荐阅读
相关标签
  

闽ICP备14008679号