【Qt+SQLite使用】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

项目数据存储需要用到数据库,免费好用的首选SQLite。


提示:以下是本篇文章正文内容,下面案例可供参考

一、SQLite是什么?

SQLite 是一个 C 语言库,它实现了轻量级的关系型数据库的功能。与其他数据库系统(如 MySQL、PostgreSQL 等)相比,SQLite 具有一些显著的特点:

  1. 轻量级:SQLite 无需独立的服务器进程或操作系统级的配置,它只需要一个动态库。这使得 SQLite 在嵌入式系统和桌面应用程序中非常受欢迎。
  2. 独立性:SQLite 数据库是存储在一个单一的磁盘文件上,这使得它非常易于备份、传输和部署。
  3. 事务处理:SQLite 支持事务处理,这使得它非常适合于需要处理大量数据和需要保持数据一致性的应用程序。
  4. SQL 兼容:SQLite 使用的 SQL 语言与其他关系型数据库系统兼容,这使得它易于学习和使用。
  5. 跨平台:SQLite 在多个操作系统中都得到了广泛的支持,如 Windows、Linux 和 macOS。

由于这些特点,SQLite 成为了一个流行的嵌入式数据库解决方案,被广泛应用于各种应用程序中,如移动应用程序、桌面应用程序和网页开发。

二、SQLite可视化软件

SQLite 是一个轻量级的数据库系统,常用于嵌入式系统和桌面应用程序。为了可视化 SQLite 数据库,可以使用一些第三方工具。以下是一些流行的 SQLite 可视化工具:

  1. DBeaver:这是一个流行的开源数据库管理工具,支持多种数据库系统,包括 SQLite。它提供了丰富的功能,如数据导入/导出、SQL 编辑器、数据建模等。
  2. SQLiteBrowser:这是一款专门用于 SQLite 的可视化工具。它提供了直观的图形界面来浏览、编辑和管理 SQLite 数据库。
  3. DBConvert:这是一款数据迁移工具,可以从其他数据库系统(如 MySQL、PostgreSQL 等)转换为 SQLite 格式,或从 SQLite 转换到其他数据库格式。
  4. SQLiteAdmin:这是一个简单的基于 web 的 SQLite 管理工具。你可以通过浏览器轻松地管理 SQLite 数据库。
  5. SQLiteStudio:这是一款功能强大的 SQLite 管理工具,提供了可视化的数据库设计、查询编辑器、数据导入/导出等功能。

这些工具各有特点,你可以根据自己的需求选择最适合你的工具。如果你正在寻找一个简单、轻量级的解决方案,SQLiteBrowser 或 SQLiteStudio 可能是一个不错的选择。如果你需要更高级的功能,如数据迁移或与其他数据库系统的集成,DBeaver 或 DBConvert 可能更适合你。

三、使用

3.1例程

以下是一个完整的例子,展示如何使用 Qt 操作 SQLite 数据库:

cpp 复制代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("example.db"); // 使用本地数据库文件

    if (!db.open()) {
        qDebug() << "Failed to open database";
        return -1;
    }

    // 创建表
    QSqlQuery query;
    if (!query.exec("CREATE TABLE Person (Id INT PRIMARY KEY, Name TEXT)")) {
        qDebug() << "Failed to create table";
        return -1;
    }

    // 插入数据
    query.prepare("INSERT INTO Person (Id, Name) VALUES (:id, :name)");
    query.bindValue(":id", 1);
    query.bindValue(":name", "Alice");
    if (!query.exec()) {
        qDebug() << "Failed to insert data";
        return -1;
    }
    query.prepare("INSERT INTO Person (Id, Name) VALUES (:id, :name)");
    query.bindValue(":id", 2);
    query.bindValue(":name", "Bob");
    if (!query.exec()) {
        qDebug() << "Failed to insert data";
        return -1;
    }

    // 查询数据
    query.prepare("SELECT * FROM Person");
    if (query.exec()) {
        while (query.next()) {
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            qDebug() << "ID:" << id << "Name:" << name;
        }
    } else {
        qDebug() << "Failed to query data";
        return -1;
    }

    // 关闭数据库连接
    db.close(); // 记得关闭数据库连接!
    return a.exec();
}

3.2解释

Qt 提供了一个用于操作 SQLite 数据库的强大模块。以下是一个简单的 Qt 示例,展示如何使用 Qt 操作 SQLite 数据库。

  1. 包含必要的头文件:
cpp 复制代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
  1. 设置和打开数据库:
cpp 复制代码
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(":memory:"); // 使用内存数据库,数据在退出时会被删除

    if (!db.open()) {
        qDebug() << "Failed to open database";
        return -1;
    }
  1. 执行 SQL 查询:
cpp 复制代码
    // 创建表
    QSqlQuery query;
    if (!query.exec("CREATE TABLE Person (Id INT PRIMARY KEY, Name TEXT)")) {
        qDebug() << "Failed to create table";
        return -1;
    }

    // 插入数据
    query.prepare("INSERT INTO Person (Id, Name) VALUES (:id, :name)");
    query.bindValue(":id", 1);
    query.bindValue(":name", "Alice");
    if (!query.exec()) {
        qDebug() << "Failed to insert data";
        return -1;
    }
  1. 查询数据:
cpp 复制代码
    // 查询数据
    query.prepare("SELECT * FROM Person");
    if (query.exec()) {
        while (query.next()) {
            int id = query.value(0).toInt();
            QString name = query.value(1).toString();
            qDebug() << "ID:" << id << "Name:" << name;
        }
    } else {
        qDebug() << "Failed to query data";
        return -1;
    }
  1. 关闭数据库连接:
cpp 复制代码
    db.close(); // 记得关闭数据库连接!
    return a.exec();
}

这个例程展示了如何使用 Qt 的 QSqlDatabaseQSqlQuery 类来创建、打开、操作和查询 SQLite 数据库。确保在 Qt 项目文件(.pro 文件)中添加了 QT += sql 来包含必要的模块。

总结

总结了Qt +SQLite 的基础知识和应用

相关推荐
kiiila20 分钟前
【Qt】编辑框/按钮控件---实现HelloWorld
开发语言·qt
凡人的AI工具箱1 小时前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
凡人的AI工具箱3 小时前
每天40分玩转Django:实操多语言博客
人工智能·后端·python·django·sqlite
lw向北.6 小时前
Qt For Android之环境搭建(Qt 5.12.11 Qt下载SDK的处理方案)
android·开发语言·qt
小灰灰搞电子7 小时前
Qt实现Android的图案密码(图形解锁)源码分享
开发语言·qt
吴冰_hogan8 小时前
JVM(Java虚拟机)的组成部分详解
java·开发语言·jvm
0zxm8 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
东阳马生架构16 小时前
JVM实战—1.Java代码的运行原理
jvm
kiiila17 小时前
【Qt】对象树(生命周期管理)和字符集(cout打印乱码问题)
开发语言·qt
ThisIsClark18 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试