qt怎么才能实现连接sqlite

img


这个错误该怎么完成啊,我的qt一直连接不上我的sqlite,.pro中也包含了qt +=core gui和qt +=widgets

可以看报错提示
贴出来看看

在Qt项目文件(.pro文件)中,加入SQL模块:QT += sql。

  • 请看👉 :C++ Qt5学习笔记 2020.9.11(使用sqlite数据库,在table widget中显示从数据库中条件查询的数据,打包成exe程序,日常报错)
  • 除此之外, 这篇博客: qt使用自带的数据库sqlite(登录,注册)中的 qt使用sqlite 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在创建数据库之前,一定要在.pro文件中加上sql

    1.可以在后面空格直接加上
    QT       += core gui  sql
    2.也可以另起一行
    QT       += core gui
    QT       += sql
    这两种方法均可以
    
    1. 创建数据库
     //创建一个数据库
        db = QSqlDatabase::addDatabase("QSQLITE");//添加驱动
        db.setDatabaseName("stu.db");//数据库的名字
    

    2.打开数据库

        bool ok = db.open();//如果不存在就创建,存在就打开
        if(ok)
        {
            qDebug()<<"数据库创建(打开)成功了";
        }
        else
        {
            qDebug()<<db.lastError().text();//调用上一次出错的原因
            exit(-1);
        }
    

    3.查找数据库

     QSqlQuery query("select name from child_info",db);
    

    完整的数据库注册代码

    void Widget::on_addbtn_clicked()
    {
    
        bool ok = db.open();//如果不存在就创建,存在就打开
        if(ok)
        {
            qDebug()<<"数据库创建(打开)成功了";
        }
        else
        {
            qDebug()<<db.lastError().text();//调用上一次出错的原因
            exit(-1);
        }
    
        QSqlQuery query;
        query.exec("create table child_info(name varchar(20),age varchar(20),gender varchar(20))");//创建表,执行sql
    
    
    
        query.prepare("INSERT INTO child_info (name, age, gender) "
                      "VALUES (:name, :age, :gender)");
        query.bindValue(":name", ui->namelineEdit->text());  
        query.bindValue(":age",ui->agelineEdit->text() );
        query.bindValue(":gender", ui->genderlineEdit->text());
        query.exec();
    
    
        ui->namelineEdit->clear();
        ui->agelineEdit->clear();
        ui->genderlineEdit->clear();
        db.close();
    }
    
    

    登录代码

    void Widget::on_showbtn_clicked()
    {
        bool ok = db.open();//如果不存在就创建,存在就打开
        if(ok)
        {
            qDebug()<<"数据库创建(打开)成功了";
        }
        else
        {
            qDebug()<<db.lastError().text();//调用上一次出错的原因
            exit(-1);
        }
    
        QSqlQuery query("select name from child_info",db);
        QSqlRecord rec = query.record();
        while(query.next())
        {
            rec = query.record();
            int snamecol = rec.indexOf("name");
            QString value = query.value(snamecol).toString();
            qDebug()<<"name"<<value;
            if(value=="周继")
            {
                qDebug()<<"找到了";
            }
        }
    }
    
    

    大致的操作如上,根据需要可以对代码进行更改。
    要说的是,qt自带的这个sqlite是一个非常轻量级的数据库,使用起来也没有那么繁杂。最后的

    		if(value=="周继") 可以更换为输入的内容,ui->namelineEdite->text()
            {
                qDebug()<<"找到了";
            }
    

    这个判断应该为登录页面上的用户名。
    根据自己的需要再进行修改吧,希望能够帮到大家!

文件路径中不要出现空格、汉字等特殊符号