赞
踩
目录
本文进行在Qt中实现SQLite3的基本功能实现演示。
在Qt中不论我们连接的何种类型的关系型数据库,在我们使用的时候其操作流程是一致的:
系统版本:Ubuntu 22.04
IDE:QtCreator 13.0.2 (based on Qt 6.6.3)
编译器版本:Qt 6.5.3 GCC 64bit
Qt中和数据库操作最为紧密相关的类有三个
QSqlDatabase, 通过这个类可以实现数据库的添加、删除、复制、关闭等操作。
通过QtCreator可以查询需要增加的头文件、以及pro文件增加的内容。
代码示例:
- /*连接SQLite数据库*/
- //创建数据库实例(加载对应的驱动), 加载的共享库位于/opt/Qt5.12.0/5.12.0/gcc_64/plugins/sqldrivers/
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- //设置要使用的数据库名称
- db.setDatabaseName("customdb");
- //连接数据库
- bool ok = db.open();
注意: 使用Qt数据库模块需要在工程文件中添加 "QT += sql"。
QSqlQuery,数据库操作类,进行数据库的增、删、改、查等操作。
代码示例:
- /*查询*/
- QSqlQuery query("SELECT * FROM artist");
- int fieldNo = query.record().indexOf("country");
- while (query.next()) {
- QString country = query.value(fieldNo).toString();
- doSomething(country);
- }
- /*插入*/
- QSqlQuery query;
- query.prepare("INSERT INTO person (id, forename, surname) "
- "VALUES (:id, :forename, :surname)");
- query.bindValue(":id", 1001);
- query.bindValue(":forename", "Bart");
- query.bindValue(":surname", "Simpson");
- query.exec();
-
- /*也可以自行拼接字符串*/
- QSqlQuery query;
- query.exec("INSERT INTO employee (id, name, salary) "
- "VALUES (1001, 'Thad Beaumont', 65000)");
QSqlQueryModel, 执行SQL语句和遍历结果集的高级接口。它构建在底层QSqlQuery之上,可以用来为视图类(如QTableView)提供数据。
代码示例:
- QSqlQueryModel *model = new QSqlQueryModel;
- model->setQuery("SELECT name, salary FROM employee");
-
-
- QTableView *view = new QTableView;
- view->setModel(model);
- view->show();
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include <QMainWindow>
- #include <QtSql/QSqlDatabase>
- #include <QtSql/QSqlQuery>
- #include <QtSql/QSqlQueryModel>
-
- QT_BEGIN_NAMESPACE
- namespace Ui {
- class MainWindow;
- }
- QT_END_NAMESPACE
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
-
- private:
- Ui::MainWindow *ui;
- QSqlDatabase db;
- QSqlQueryModel model;
- };
- #endif // MAINWINDOW_H
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QTableView>
- #include <QVBoxLayout>
-
- MainWindow::MainWindow(QWidget *parent)
- : QMainWindow(parent)
- , ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- /**/
- db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName("./test.db");
- db.open();
-
- QSqlQuery query("SELECT * FROM COMPANY;");
-
- model.setQuery(query);
- QTableView *view = new QTableView(this);
- view->setModel(&model);
-
- QVBoxLayout* vb = new QVBoxLayout(this);
- vb->addWidget(view);
- ui->centralwidget->setLayout(vb);
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
本文介绍了Qt数据库相关类,并总结了Qt操作数据库的基本操作流程,最后进行了基本应用的代码实验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。