在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 举例

在Qt中使用sqlite数据库_第1张图片

在Qt中使用sqlite数据库_第2张图片

在Qt中使用sqlite数据库_第3张图片

sqlite

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 

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()<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()<lineEdit->clear();
    ui->lineEdit->setText("数据库已关闭");
}


打开数据库

在Qt中使用sqlite数据库_第4张图片

增加

在Qt中使用sqlite数据库_第5张图片

删除

在Qt中使用sqlite数据库_第6张图片

在Qt中使用sqlite数据库_第7张图片

修改

在Qt中使用sqlite数据库_第8张图片

查询

在Qt中使用sqlite数据库_第9张图片

你可能感兴趣的:(Qt,数据库,qt,sqlite,c++,c语言)