Qt中SQLite的使用

前提:因为我最近看了个上位机的项目,它用的是SQLite数据库而不是MySQL,所以我打算学一下
整体上的代码逻辑其实和MySQL相同
不同的是这个SQLite是会在目录下生成一个.db文件存储数据
还有就是记得.pro或者CMakeLists.txt中做相应的配置
这是头文件

点击查看代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    bool createSqliteDB();//创建SQlite数据库
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QSqlDatabase db;
};
#endif // MAINWINDOW_H

这是源文件
点击查看代码
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    createSqliteDB();
}
//创建SQlite数据库
bool MainWindow::createSqliteDB()
{
    // 1. 获取数据库连接实例
    db = QSqlDatabase::addDatabase("QSQLITE");
    // 设置数据库文件,不存在会自动创建
    db.setDatabaseName("./data.db");
    // 2. 打开数据库
    if (!db.open())
    {
        qDebug() << "数据库打开失败:" << db.lastError().text();
        return false;
    }
    qDebug() << "SQLite 数据库打开成功";
    // 3. 创建表(不存在则创建)
    QSqlQuery query(db);//绑定db数据库
    //有3列数据,id,name,age
    QString createTable = R"(
        CREATE TABLE IF NOT EXISTS user(
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            age INTEGER
        )
    )";
    if (!query.exec(createTable))
    {
        qDebug() << "建表失败:" << query.lastError().text();
        return false;
    }
    // 4. 插入数据
    query.prepare("  INTO user(name, age) VALUES (:name, :age)");
    query.bindValue(":name", "张三");
    query.bindValue(":age", 22);
    query.exec();
    return true;
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QSqlQuery query(db);
    query.exec("SELECT * FROM user");
    while (query.next())
    {
        int id = query.value("id").toInt();
        QString name = query.value("name").toString();
        QString age = query.value("age").toString();
        qDebug()<<name+" "+age;
        ui->label->setText(name+" "+age);
    }
}

posted on 2026-07-02 21:41  dd_l  阅读(3)  评论(0)    收藏  举报