本文介绍: private://数据库文件。

目录

基础

头文件

模块

 编程步骤

实战

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

效果

原文地址:https://blog.csdn.net/weixin_59669309/article/details/135902697

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_64785.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注