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

目录

基础

头文件

模块

 编程步骤

实战

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;
    }

效果

相关推荐

  1. SQLite数据库增删

    2024-01-30 13:50:01       40 阅读
  2. sqlite3 数据库增删

    2024-01-30 13:50:01       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-30 13:50:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-30 13:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-30 13:50:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-30 13:50:01       20 阅读

热门阅读

  1. SwiftUI中几种关闭键盘的方式

    2024-01-30 13:50:01       31 阅读
  2. 《设计模式的艺术》笔记 - 访问者模式

    2024-01-30 13:50:01       23 阅读
  3. MySQL安全(二)SQL注入

    2024-01-30 13:50:01       29 阅读
  4. 在Ubuntu Linux上安装Chrome浏览器的最佳方法

    2024-01-30 13:50:01       39 阅读
  5. ubuntu 安装 nvidia 驱动

    2024-01-30 13:50:01       42 阅读
  6. HarmonyOS ArkUI基础学习01

    2024-01-30 13:50:01       43 阅读
  7. ubuntu 安装python3.10

    2024-01-30 13:50:01       42 阅读
  8. nginx一直Nginx 502 bad gateway

    2024-01-30 13:50:01       34 阅读
  9. 软件工程学科的本质

    2024-01-30 13:50:01       36 阅读
  10. ROS学习笔记8:TF坐标变换

    2024-01-30 13:50:01       35 阅读