当前位置:   article > 正文

SQLite3(3):Qt中使用SQLite3

SQLite3(3):Qt中使用SQLite3

目录

一、前言

二、Qt相关类

2.1 QSqlDatabase

2.2 QSqlQuery

2.3 QSqlQueryModel

三、Qt基本应用实现

3.1 mainwindow.h

 3.2 mainwindow.cpp

3.3 应用界面 

四、总结


一、前言

本文进行在Qt中实现SQLite3的基本功能实现演示。

在Qt中不论我们连接的何种类型的关系型数据库,在我们使用的时候其操作流程是一致的:

  • 创建数据库实例并初始化
  • 连接数据库
  • 对数据库进行一系列的添、删、查、改操作(编写并执行SQL语句)
  • 关闭数据库

系统版本:Ubuntu 22.04

IDE:QtCreator 13.0.2 (based on Qt 6.6.3)

编译器版本:Qt 6.5.3 GCC 64bit

二、Qt相关类

Qt中和数据库操作最为紧密相关的类有三个

2.1 QSqlDatabase

QSqlDatabase, 通过这个类可以实现数据库的添加、删除、复制、关闭等操作。

通过QtCreator可以查询需要增加的头文件、以及pro文件增加的内容。

代码示例:

  1. /*连接SQLite数据库*/
  2. //创建数据库实例(加载对应的驱动), 加载的共享库位于/opt/Qt5.12.0/5.12.0/gcc_64/plugins/sqldrivers/
  3. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  4. //设置要使用的数据库名称
  5. db.setDatabaseName("customdb");
  6. //连接数据库
  7. bool ok = db.open();

注意: 使用Qt数据库模块需要在工程文件中添加 "QT += sql"。

2.2 QSqlQuery

QSqlQuery,数据库操作类,进行数据库的增、删、改、查等操作。

代码示例:

  1. /*查询*/
  2. QSqlQuery query("SELECT * FROM artist");
  3. int fieldNo = query.record().indexOf("country");
  4. while (query.next()) {
  5. QString country = query.value(fieldNo).toString();
  6. doSomething(country);
  7. }
  8. /*插入*/
  9. QSqlQuery query;
  10. query.prepare("INSERT INTO person (id, forename, surname) "
  11. "VALUES (:id, :forename, :surname)");
  12. query.bindValue(":id", 1001);
  13. query.bindValue(":forename", "Bart");
  14. query.bindValue(":surname", "Simpson");
  15. query.exec();
  16. /*也可以自行拼接字符串*/
  17. QSqlQuery query;
  18. query.exec("INSERT INTO employee (id, name, salary) "
  19. "VALUES (1001, 'Thad Beaumont', 65000)");

2.3 QSqlQueryModel

QSqlQueryModel, 执行SQL语句和遍历结果集的高级接口。它构建在底层QSqlQuery之上,可以用来为视图类(如QTableView)提供数据。 

代码示例:

  1. QSqlQueryModel *model = new QSqlQueryModel;
  2. model->setQuery("SELECT name, salary FROM employee");
  3. QTableView *view = new QTableView;
  4. view->setModel(model);
  5. view->show();

三、Qt基本应用实现

3.1 mainwindow.h

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include <QtSql/QSqlDatabase>
  5. #include <QtSql/QSqlQuery>
  6. #include <QtSql/QSqlQueryModel>
  7. QT_BEGIN_NAMESPACE
  8. namespace Ui {
  9. class MainWindow;
  10. }
  11. QT_END_NAMESPACE
  12. class MainWindow : public QMainWindow
  13. {
  14. Q_OBJECT
  15. public:
  16. MainWindow(QWidget *parent = nullptr);
  17. ~MainWindow();
  18. private:
  19. Ui::MainWindow *ui;
  20. QSqlDatabase db;
  21. QSqlQueryModel model;
  22. };
  23. #endif // MAINWINDOW_H

 3.2 mainwindow.cpp

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QTableView>
  4. #include <QVBoxLayout>
  5. MainWindow::MainWindow(QWidget *parent)
  6. : QMainWindow(parent)
  7. , ui(new Ui::MainWindow)
  8. {
  9. ui->setupUi(this);
  10. /**/
  11. db = QSqlDatabase::addDatabase("QSQLITE");
  12. db.setDatabaseName("./test.db");
  13. db.open();
  14. QSqlQuery query("SELECT * FROM COMPANY;");
  15. model.setQuery(query);
  16. QTableView *view = new QTableView(this);
  17. view->setModel(&model);
  18. QVBoxLayout* vb = new QVBoxLayout(this);
  19. vb->addWidget(view);
  20. ui->centralwidget->setLayout(vb);
  21. }
  22. MainWindow::~MainWindow()
  23. {
  24. delete ui;
  25. }

3.3 应用界面 

四、总结

本文介绍了Qt数据库相关类,并总结了Qt操作数据库的基本操作流程,最后进行了基本应用的代码实验。

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

闽ICP备14008679号