如果在数据库中找到某个值,则打开另一个窗口

Opening a different window if a certain value in the database if found

本文关键字:窗口 另一个 数据库 如果      更新时间:2023-10-16

我很难弄清楚如何检查数据库中的信息是否具有更改登录屏幕的特定值。当用户以教师或学生身份登录时,我想打开一个不同的窗口。我确实在数据库中为每个人分配了一个学生或老师的值。顺便说一下,其他学生的代码运行良好。

edit:if语句是我应该把代码放在的地方。

   if(count == 1)
    {
        ui->statusLabel->setText("Username password correct. Username: "
                                 + uname);
        //dbConnection->connClose();
        if(query.value(""))
        {
        }
        else
        {
        // hide login window
        this->hide();
        // open admin window
        StudentDialog myStudent;
        myStudent.setModal(true);
        myStudent.exec();
        }
    }

http://qt-project.org/doc/qt-4.8/sql-sqlstatements.html

它显示了这个例子:

 while (query.next()) {
     QString name = query.value(0).toString();
     int salary = query.value(1).toInt();
     qDebug() << name << salary;
 }

这个:

 QSqlDatabase::database().transaction();
 QSqlQuery query;
 query.exec("SELECT id FROM employee WHERE name = 'Torild Halvorsen'");
 if (query.next()) {
     int employeeId = query.value(0).toInt();
     query.exec("INSERT INTO project (id, name, ownerid) "
                "VALUES (201, 'Manhattan Project', "
                + QString::number(employeeId) + ')');
 }
 QSqlDatabase::database().commit();

基本上,查询将结果存储在一个2d数组中。要在列之间导航,请使用值索引。若要强制转换它,请使用QVariant::toXXX()选项,如toInt()toString()等。若要从执行的查询中获得下一行值,请调用query.next()

http://qt-project.org/doc/qt-4.8/qsqlquery.html#value

http://qt-project.org/doc/qt-4.8/qsqlquery.html#next

http://qt-project.org/doc/qt-4.8/qvariant.html#details

所以在你的情况下,你可能只会打电话给:

bool is_teacher = query.value(0).toBool();
if(is_teacher)
{
    // ...
}
// etc

如果你的某些陈述仍有问题,请尝试:

qDebug() << qPrintable(query.lastError().text());

希望能有所帮助。