• 5、QT中SQLite数据库的操作


    一、QT中的SQLite数据库

    1、添加头文件和模块

    Header:
    #include  
    qmake:
    QT += sql//pro文件添加sql模块
    
    • 1
    • 2
    • 3
    • 4

    执行数据库操作的类:

    Header:
    #include  
    qmake:
    QT += sql
    
    • 1
    • 2
    • 3
    • 4

    2、C语言中的SQLite增删减查

    SQLite3的基础教程

    3、SQLite的初始化

    ①、创建数据库的链接对象:

    QSqlDatabase dataBase;
    
    • 1

    ②、使用数据库驱动

    dataBase = QSqlDatabase :: addDatabase("QSQLITE");//添加数据库的驱动
    
    • 1

    ③、设置数据库的名称(创建一个数据库)

    dataBase.setDatabaseName("QSQLITE");
    
    • 1

    ④、创建一张表

    QString table = "create table user_table(user QString, paswd QString)";
    sqlQuery = QSqlQuery(dataBase);//指定这个操作将在哪个数据库上执行。
    bool flag = sqlQuery.exec(table);//执行数据库的操作
    
    • 1
    • 2
    • 3

    例子:

    Widget::Widget(QWidget *parent)
        : QWidget(parent)
        , ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
        dataBase = QSqlDatabase :: addDatabase("QSQLITE");//添加数据库的驱动
        dataBase.setHostName("数据库");
        dataBase.setDatabaseName("QSQLITE");
        dataBase.setUserName("123456");
        dataBase.setPassword("123456");
    
        //打开数据库
        if(dataBase.open())
        {
            qDebug() << "打开成功" << endl;
        }
        //创建一张表
        QString table = "create table user_table(user QString, paswd QString)";
        //执行数据库的操作
        sqlQuery = QSqlQuery(dataBase);//执行操作的数据库:QSQLITE
        bool flag = sqlQuery.exec(table);//执行数据库的操作
        if(flag==true)
        {
            qDebug()<<"数据库表创建成功"<<endl;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    4、插入数据

     QString insert = QString("insert into user_table(user,paswd) values('%1','%2')").arg(user).arg(paswd);
    
    • 1

    例子:

    void Widget::on_pushButton_clicked()
    {
        QString user = ui->lineEdit->text();
        QString paswd = ui->lineEdit_2->text();
    
        QString find = QString("select * from user_table where user='%1'").arg(user);
        bool ret = sqlQuery.exec(find);
        if(ret)
        {
            if(sqlQuery.next())
            {
                qDebug() << "账号已经存在" << endl;
                ui->lineEdit->clear();
                ui->lineEdit_2->clear();
                return;
            }
        }
    
        QString insert = QString("insert into user_table(user,paswd) values('%1','%2')").arg(user).arg(paswd);
        bool flag = sqlQuery.exec(insert);//执行数据库插入操作
        if(!flag)
        {
            qDebug()<<"数据插入失败"<<endl;
        }
        ui->lineEdit->clear();
        ui->lineEdit_2->clear();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    5、查找数据

    ①、遍历所有数据并保存

    QString find = "select * from user_table";
    bool flag = sqlQuery.exec(find);//把遍历的所有数据都保存在sqlQuery内
    
    • 1
    • 2

    ②、对比数据

    while(sqlQuery.next())//遍历查询结果中的每一行记录。
    {
    	//从查询结果中获取每一行记录的第一列和第二列的值
        QString user = sqlQuery.value(0).toString();
        QString paswd = sqlQuery.value(1).toString();
    
        if(user == code && paswd == pwd)
        {
            qDebug() << "登录成功" << endl;
        }
        qDebug() << "账号:" << user << endl;
        qDebug() << "密码:" << paswd << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    例子:

    void Widget::on_pushButton_2_clicked()
    {
    
        QString code = ui->lineEdit->text();
        QString pwd = ui->lineEdit_2->text();
    
        QString find = "select * from user_table";
        bool flag = sqlQuery.exec(find);
        if(flag==true)
        {
            qDebug()<<"数据库查询成功"<<endl;
        }
    
        while(sqlQuery.next())
        {
            QString user = sqlQuery.value(0).toString();
            QString paswd = sqlQuery.value(1).toString();
    
            if(user == code && paswd == pwd)
            {
                qDebug() << "登录成功" << endl;
            }
            qDebug() << "账号:" << user << endl;
            qDebug() << "密码:" << paswd << endl;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    6、注意

    • 查询数据的时候,必须要先把遍历的数据保存在sqlQuery类中。
  • 相关阅读:
    混合优化算法(optimtool.hybrid)
    二十四、【参考素描三大面和五大调】
    使用maven创建springboot项目
    java解压zip压缩包
    Shiro之保存Session到数据库中-yellowcong
    基于移动设备的OCR识别工作进展(2)
    安全可靠的文件传输服务助力完成更高效的医疗保健工作(上)
    Java.lang.Class类 toString()方法有什么功能呢?
    多线程七夕特别版(二)互斥锁-死锁-等待通知机制
    使用JavaScript实现复杂功能:动态数据可视化的构建
  • 原文地址:https://blog.csdn.net/qq_53402930/article/details/132698822