qt学习:QTSQL+连接sqlite数据库+增删改查

文章介绍了如何在Qt应用中使用QTSql模块连接SQLite数据库,包括数据库连接、创建表、处理SQL操作(如添加、删除、修改和查询)以及在UI界面中实现这些功能的详细步骤和错误处理。
摘要由CSDN通过智能技术生成

目录

基础

头文件

模块

 编程步骤

实战

ui界面

ui界面的成员定义

构造函数初始化准备

在ui界面类析构函数里关闭数据库

添加按钮

删除按钮

改按钮

查询按钮

效果


基础

现在常用的是sqlite是sqlite 3,我用的是sqlite 3

数据库文件是以db结尾的

查看数据库文件软件下载路径

SQLite administration | SQLite Experticon-default.png?t=N7T8https://www.sqliteexpert.com/download.html

头文件

#include <QTSql>

模块

QT  += core gui sql

 编程步骤

  • 连接数据库,并且要指定要连接哪一个数据库
  • 打开数据库文件,如果文件不存在,则创建
  • 创建表
  • 增删改查

实战

ui界面

ui界面的成员定义

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>

private:
    QSqlDatabase db;//数据库文件

构造函数初始化准备

    //1、连接数据库,指定你要操作的数据库的类型  并且设置数据库文件的名字
    //第二个参数不写,指的是该数据库文件 是这个工程默认操作的数据库文件
    db = QSqlDatabase::addDatabase("QSQLITE","a1"); //第二个参数指的是连接名称,其实就是标识符
    //指定操控的数据库文件,没有则创建,如果用db.open打开文件要密码
    db.setDatabaseName("company.db");

    
    //2、打开数据库文件
    if(db.open()==false)
    {
        //db.lastError()错误的原因
        qDebug()<<"open error:"<<db.lastError().text();
    }
    //3、创建表
    QString sql = QString("create table if not exists staff(id int unique PRIMARY KEY NOT NULL,name text NOT NULL,address text NOT NULL,salary double NOT NULL);");
    //创建一个可以对db执行语句的对象
    QSqlQuery query(db);
    //执行sql语句
    bool ret = query.exec(sql);
    if(ret == false)
    {
        qDebug()<<"create table error "<<query.lastError().text();
    }

在ui界面类析构函数里关闭数据库

//关闭数据库
db.close();

添加按钮

    //1、获取控件的数据
    int id = ui->lineEdit_id->text().toInt();
    QString name = ui->lineEdit_name->text();
    QString address = ui->lineEdit_address->text();
    double salary = ui->lineEdit_salary->text().toDouble();

    //2、准备添加sql语句
    QString sql = QString("insert into staff values(%1,'%2','%3',%4);").arg(id).arg(name).arg(address).arg(salary);
    //创建一个可以对db执行语句的对象
    QSqlQuery query(db);
    //执行sql语句
    bool ret = query.exec(sql);
    if(ret == false)
    {
        qDebug()<<"insert into error "<<query.lastError().text();
    }

删除按钮

    //以ID作为唯一的标识 ,删除ID所在行的那一条记录
    int id = ui->lineEdit_id->text().toInt();
    //删除语句
    QString sql = QString("delete from staff where id=%1;").arg(id);
    //创建一个可以对db执行语句的对象
    QSqlQuery query(db);
    //执行sql语句
    bool ret = query.exec(sql);
    if(ret == false)
    {
        qDebug()<<"delete error "<<query.lastError().text();
    }

改按钮

    //以ID作为唯一的标识 ,更新其他的数据
    int id = ui->lineEdit_id->text().toInt();
    QString updateName = ui->lineEdit_name->text();
    QString updateAddress = ui->lineEdit_address->text();
    double salary = ui->lineEdit_salary->text().toDouble();
    //组合更新sql语句
    QString sql = QString("update staff  set name='%1',address='%2',salary=%3  where id=%4;")
                    .arg(updateName)
                    .arg(updateAddress)
                    .arg(salary)
                    .arg(id);
    //创建一个可以对db执行语句的对象
    QSqlQuery query(db);
    //执行sql语句
    bool ret = query.exec(sql);
    if(ret == false)
    {
        qDebug()<<"update error "<<query.lastError().text();
    }

查询按钮

    //根据名字查询
    QString sql = QString("select * from staff where name=\"%1\";").arg(ui->lineEdit_name->text());
    //创建一个可以对db执行语句的对象
    QSqlQuery query(db);
    //执行sql语句
    bool ret = query.exec(sql);
    if(ret == false)
    {
        qDebug()<<"select error "<<query.lastError().text();
    }
    //查询的结果
    //行坐标向下移
    while(query.next())
    {
        //获取数据库query所指的那行的数据
        int id = query.value(0).toInt();
        QString name = query.value("name").toString();
        QString address = query.value("address").toString();
        double salary = query.value("salary").toDouble();
        //组合字符串
        QString text = QString("id:%1 name:%2 address:%3 salary:%4").arg(id).arg(name).arg(address).arg(salary);
        //打印
        qDebug()<<text;
    }

效果

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值