Qt上结合sqlite数据库的简单例子

在Qt上搭载数据库,可以考虑Qt自带的sqlite数据库,在项目文件pro中应先加入sql文件,如图所示

#-------------------------------------------------
#
# Project created by QtCreator 2020-10-12T10:13:36
#
#-------------------------------------------------

QT       += core gui sql

然后在头文件中加入引用的类,以及生成数据库对象及表对象,数据库对象中的参数QSQLITE为驱动

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_add_clicked();

    void on_pushButton_display_clicked();

    void on_pushButton_delete_clicked();

    void on_pushButton_repair_clicked();

private:
    Ui::MainWindow *ui;
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    QSqlQuery query;
};

#endif // MAINWINDOW_H

其余部分余下所示,实际上就是实现数据库的增删查改

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //连接数据库
    db.setDatabaseName("student");

    //打开数据库
    if(!db.open())
        ui->textBrowser->setText("打开失败\n");
    else {
        ui->textBrowser->setText("打开成功\n");
    }
    //创建表
    query.exec("create table student(id int primary key,name varchar,grade varchar)");
}

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

//添加元素
void MainWindow::on_pushButton_add_clicked()
{
    QString str=QString("insert into student values('%1','%2','%3')").arg(ui->lineEdit_ID->text().toInt()).
            arg(ui->lineEdit_name->text()).arg(ui->lineEdit_grade->text());
    query.exec(str);
}

//查询现有元素
void MainWindow::on_pushButton_display_clicked()
{
    QString str=ui->textBrowser->toPlainText();
    query.exec("select id,name,grade from student where id >= 0");
    while(query.next())
    {
        QString id=query.value(0).toString();
        QString name=query.value(1).toString();
        QString grade=query.value(2).toString();
        qDebug()<<id<<name<<grade;
        str=str+id+'\t'+name+'\t'+grade+'\n';
    }
    ui->textBrowser->setText(str);
}

//删除指定元素
void MainWindow::on_pushButton_delete_clicked()
{
    QString str=QString("delete from student where id='%1'").arg(ui->lineEdit_ID->text().toInt());
    query.exec(str);
}

//修改元素
void MainWindow::on_pushButton_repair_clicked()
{
    QString str=QString("update student set name='%1',grade='%2' where id='%3'").arg(ui->lineEdit_name->text()).
            arg(ui->lineEdit_grade->text()).arg(ui->lineEdit_ID->text().toInt());
    query.exec(str);
}

具体的ui界面及调试效果如下所示,数据库中的数据加入后就会保存,即使关闭程序后也不会被清空,重新查询依然存在,各位小伙伴们可以试试喔

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在 Qt 中使用本地的 SQLite 数据库,需要先安装 SQLite 的驱动程序。以下是使用 Qt 连接 SQLite 数据库的基本步骤: 1. 在 Qt 项目中添加 SQLite 驱动程序。方法是在项目文件 (.pro) 中添加以下行: ``` QT += sql ``` 2. 在代码中引入 QSqlDatabase 类和 QSqlQuery 类: ``` #include <QSqlDatabase> #include <QSqlQuery> ``` 3. 打开数据库连接: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("mydatabase.db"); if (!db.open()) { qDebug() << "Failed to open database!"; return; } ``` 在这个例子中,我们新建了一个名为 `mydatabase.db` 的 SQLite 数据库,并且成功打开了数据库连接。如果连接失败,会输出一条调试信息。 4. 执行 SQL 查询: ``` QSqlQuery query; query.exec("CREATE TABLE mytable (id INT PRIMARY KEY, name VARCHAR(20))"); query.exec("INSERT INTO mytable (id, name) VALUES (1, 'Alice')"); query.exec("INSERT INTO mytable (id, name) VALUES (2, 'Bob')"); query.exec("SELECT * FROM mytable"); while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << id << name; } ``` 在这个例子中,我们创建了一个名为 `mytable` 的表,并向其中插入了两条记录。然后我们执行了一个 SELECT 查询,遍历了查询结果并输出了每条记录的 id 和 name。 以上就是在 Qt 中连接 SQLite 数据库的基本步骤。你可以根据自己的需要进一步学习和使用 QSqlDatabase 和 QSqlQuery 类的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值