QT query.exec() 始终返回 false

Ale*_*lex 2 c++ sqlite qt

我正在尝试在 QT 中制作一个简单的登录表单,但我想我做错了什么。我看了一些教程,在不同的论坛上搜索,但找不到任何解决方案。

数据库声明如下:

#include <QMainWindow>
#include <QTSql>
#include <QtDebug>
#include <QFileinfo>

QSqlDatabase sqldb;
sqldb=QSqlDatabase::addDatabase("QSQLITE");
sqldb.setDatabaseName("data.db");
Run Code Online (Sandbox Code Playgroud)

并开始这样:

 if(sqldb.open())
    ui->label->setText("Conectat!");
else
    ui->label->setText("Nu m-am conectat!");
Run Code Online (Sandbox Code Playgroud)

看起来在我的代码中,query.exec() 只返回 false。

void MainWindow::on_pushButton_clicked()
{
user=ui->lineEdit->text();
qDebug()<<user;
if(!sqldb.isOpen()){
    qDebug()<<"Not connected to db";
    return;
}

QSqlQuery qry;

if(qry.exec("select * from users where name='"+user+"'"))
{
    int count=0;
    while(qry.next()){
        count++;
    }
    if(count==1)
        ui->label_3->setText("correct");
    if(count<1)
        ui->label_3->setText("not correct");
    if(count>1)
        ui->label_3->setText("duplicate");
}
else qDebug()<<"not working!";
}
Run Code Online (Sandbox Code Playgroud)

如果我将 if 条件更改为 !qry.exec(...) 我总是收到“不正确”的消息。有任何想法吗?

Tim*_*yer 5

您通常可以使用以下方法的lastError()找出问题所在QSqlQuery

if( !query.exec(...) )
{
    qDebug() << query.lastError().text();
}
Run Code Online (Sandbox Code Playgroud)