在Qt中使用sqlite数据库

1. sqlite

在Qt中操作数据库,也是执行对应的sql语句

Qt支持多种数据库类型

1.1 连接指定的数据库类型

QSqlDatabase

addDatabase():连接指定的数据库类型,返回值得到对应数据库的操作对象(QSqlDatabase)

获取到连接数据库对象

1.2 根据类型打开数据库

QSqlDatabase类,函数setDatabaseName():指定操作的数据库文件名

open():打开数据库

1.3 通过sql语句操作数据库文件

QSqlQuery类:执行sql语句

exec():执行sql语句

next():判断执行sql语句是否有结果

1.4 举例

sqlite

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>
#include <QFileDialog>
#include <QDebug>
#include <QSqlQuery>
#include <QInputDialog>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_open_clicked();

    void on_pushButton_add_clicked();

    void on_pushButton_del_clicked();

    void on_pushButton_update_clicked();

    void on_pushButton_select_clicked();

    void on_pushButton_close_clicked();

private:
    Ui::Widget *ui;

    //创建数据库对象
    QSqlDatabase db;

};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

//操作数据库
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //添加一个数据库,获取数据库对象去连接sqlite数据库,返回一个数据库连接对象
    db = QSqlDatabase::addDatabase("QSQLITE");

}

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

//打开数据库
void Widget::on_pushButton_open_clicked()
{
    //打开文件
    QString filename = QFileDialog::getOpenFileName(this,"打开数据库","E:/","database(*.db)");

    //打开数据库文件
    db.setDatabaseName(filename);
    if(db.open()){
        ui->lineEdit->clear();
        ui->lineEdit->setText("数据库已打开");
    }

}


//添加数据
void Widget::on_pushButton_add_clicked()
{
    //指定操作的数据库,这里操作db
    QSqlQuery query(db);

    //输入对话框
    QString name = QInputDialog::getText(this,"名字","请输入名字");
    QString age = QInputDialog::getText(this,"年龄","请输入年龄");
    QString id = QInputDialog::getText(this,"学号","请输入学号");

    //编写sql
    QString sql = "insert into classone values('%0',%1,'%2')";// % 代表动态的

    //给通配符赋值
    sql = sql.arg(name).arg(age).arg(id);

    ui->lineEdit->clear();
    ui->lineEdit->setText(sql);

    //打印看一下sql
    qDebug()<<sql;

    //执行sql
    query.exec(sql);

}


//删除数据
void Widget::on_pushButton_del_clicked()
{
    QSqlQuery query(db);

    QString name = QInputDialog::getText(this,"名字","请输入要删除人的名字");

    //编写sql
    QString sql = "delete from classone where name = '%0'";
    sql = sql.arg(name);

    ui->lineEdit->clear();
    ui->lineEdit->setText(sql);

    query.exec(sql);
}

//修改数据
void Widget::on_pushButton_update_clicked()
{
    QSqlQuery query(db);
    QString name = QInputDialog::getText(this,"姓名","请输入要修改人的姓名");
    QString age = QInputDialog::getText(this,"年龄","请输入修改后的年龄");

    QString sql = "update classone set age = '%0' where name = '%1'";

    sql = sql.arg(age).arg(name);
    ui->lineEdit->clear();
    ui->lineEdit->setText(sql);
    query.exec(sql);

}

//查询操作
void Widget::on_pushButton_select_clicked()
{
    QSqlQuery query(db);

    QString sql = "select * from classone";
    ui->lineEdit->clear();
    ui->lineEdit->setText(sql);

    query.exec(sql);

    //当执行成功,查询到的数据存储在query对象中
    ui->textEdit->clear();
    while(query.next()){//next判断是否有下一条数据
        QString name = query.value("name").toString();
        int age = query.value("age").toInt();
        QString id = query.value("id").toString();

        ui->textEdit->append(name+"  "+QString::number(age)+"  "+id+"\n");
        qDebug()<<name<<"    "<<age<<"   "<<id;
    }


}

//关闭数据库
void Widget::on_pushButton_close_clicked()
{
    db.close();
    ui->lineEdit->clear();
    ui->lineEdit->setText("数据库已关闭");
}


打开数据库

增加

删除

修改

查询

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值