c++ - QT MySql 数据库检查登录名和密码以登录

标签 c++ mysql database qt qt5

我想在qt中制作应用程序,其中将登录和注册系统,登录名和密码位于MySQL数据库中。我已将数据库连接到我的应用程序,但我不知道如何将登录名和密码与“行编辑”中给出的进行比较,这是教程中的代码,但它是 SQLite 教程

void login::on_pushButton_sign_in_clicked()

QString login, password;
login = ui->lineEdit_login_login->text();
password = ui->lineEdit_password_login->text();

QSqlQuery qry;

if(qry.exec("select logins, passwords * from users where logins =  '" + login + "' and password = '" + password + "' " ))
{
    while(qry.next())
    {
        hide();
        mainwindow = new MainWindow(this);
        mainwindow->show();
    }


}

}

最佳答案

正如评论中提到的,您应该首先了解基本的 SQL 查询。假设您有一个 users 表,其中包含如下列:

|用户 ID |名称 |用户名 |密码|

从您的自定义应用中获取 myUsernamemyPassword,您的 SQL 查询可能如下所示:

从用户中选择用户 ID、名称,其中用户名 = 'myUsername' AND 密码 = 'myPassword'

现在,您在代码中使用它:

void login::on_pushButton_sign_in_clicked()
{
    QString username = ui->lineEdit_login_login->text();
    QString password = ui->lineEdit_password_login->text();

    QSqlQuery query;
    query.prepare("SELECT userID, name from users WHERE 
                    username = :username AND 
                    password = :password");
    query.bindValue(":username", username);
    query.bindValue(":password", password);
    if (query.exec())
    {
        if (query.size() > 0)
        {
            // You login a user here
            QString name = query.value(1).toString();
            qDebug() << name << "is logged in";
        }
        else
        {
            qDebug() << "Login failed. Invalid username or password.";
        }
    }
}

请注意,我认为这是出于学习目的。建议保存密码hash而不是纯文本。干杯!

关于c++ - QT MySql 数据库检查登录名和密码以登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311120/

相关文章:

c++ - 使用 void 函数在 C++ 中增加一个变量

c++ - 我可以将每个 C++ 库转换为仅包含头文件的库吗?

javascript - JQuery 在 Ajax 函数后删除表格行

php - 将旧表中的额外内容复制到新表

database - 多次使用的值对象是实体吗?

php - Laravel 如何获取当前时间和日期值

C++ 依赖注入(inject)方式——模板还是虚拟方法?

c# - 从 native 调用 C# 来检索字符串

php - 创建干净的 HABTM 查询

mysql - 如何恢复开发机上的Mysql数据库?