简体   繁体   English

qt5从mysql数据库中选择数据

[英]qt5 selecting data from mysql database

I want to make a login system, I have mysql database I want to login according to my mysql database username and password but it is not working I think I have problem with my code please check the code 我想创建一个登录系统,我有mysql数据库,我想根据我的mysql数据库的用户名和密码登录,但无法正常工作我想我的代码有问题,请检查代码

void MainWindow::on_loginBtn_clicked()
{

    QSqlDatabase db;

    db = QSqlDatabase::addDatabase("QMYSQL", "MyConnect");
    db.setHostName("localhost");
    db.setUserName("root");
    db.setPassword("");
    db.setDatabaseName("qtregister");

    QString username = ui->loginEdit->text();
    QString password = ui->loginPassword->text();


    if(db.open()) {

        QSqlQuery query(QSqlDatabase::database("MyConnect"));

        query.prepare(QString("SELECT username and password from users where username = :username AND password = :password"));
        query.bindValue(":username", username);
        query.bindValue(":password", password);

        if(!query.exec()) {
            QMessageBox::information(this, "Failed", "Failed To Login");

        }else {
          QMessageBox::information(this, "Success", "Login Success");
        }
    }
    else {
        QMessageBox::information(this, "Not Connected", "Not Conneced Success");
    }
}

UPDATED 更新

There was an error in your query (Sometimes you need to debug your query in another environment that Qt like mysql clis or online ones http://sqlfiddle.com ) 查询中存在错误 (有时您需要在Qt另一个环境(如mysql clis或在线环境http://sqlfiddle.com )中调试查询)

SELECT username,password from users where username = :username AND password = :password

instead of 代替

SELECT username and password from users where username = :username AND password = :password

Corrected Answer 正确答案

void MainWindow::on_loginBtn_clicked() {

  QSqlDatabase db;

  db = QSqlDatabase::addDatabase("QMYSQL", "MyConnect");
  db.setHostName("localhost");
  db.setUserName("root");
  db.setPassword("");
  db.setDatabaseName("qtregister");

  QString username = ui - > loginEdit - > text();
  QString password = ui - > loginPassword - > text();

  if (db.open()) {

    QSqlQuery query(db);

    query.prepare(QString("SELECT username , password from users where username = :username AND password = :password"));
    query.bindValue(":username", username);
    query.bindValue(":password", password);

    if (!query.exec()) {
      QMessageBox::information(this, "Failed", "Error in executing query");

    } else {
      while (query.next()) {
        QString usernameFromDB = query.value(0).toString();
        QString passwordFromDB = query.value(1).toString();
        qDebug() << usernameFromDB << passwordFromDB;
        if (usernameFromDB == username && passwordFromDB == password)
          QMessageBox::information(this, "Success", "Login Success");
        else
          QMessageBox::information(this, "Failed", "Username or password error");
      }
    }
  } else {
    QMessageBox::information(this, "Not Connected", "Not Conneced Success");
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM