2017-06-10 2 views
-5

Fehler "'+' kann zwei Zeiger nicht hinzufügen".Fehler: '+' kann zwei Zeiger nicht hinzufügen

Kann mir jemand erklären, was genau falsch ist/wie man es löst?

Information: movedb hat einen Tabellenbenutzer erhalten, der User_ID (Integer) und Passwort (Text) enthält. Zeile, die jetzt einen Fehler generiert, gab früher false zurück, so dass ich dachte, dass User_ID aufgrund von Typen (Qstring und Integer) nicht mit dem Benutzernamen verglichen werden kann und die Konvertierung durchgeführt wurde.

login.cpp

#include "login.h" 
#include "ui_login.h" 

Login::Login(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::Login) 
{ 
    ui->setupUi(this); 
    db=QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("localhost"); 
    db.setUserName("root"); 
    db.setPassword(""); 
    db.setDatabaseName("movedb"); 
    if(!db.open()) 
    { 
     ui->Status->setText("Status: Failed to connect with database"); 
    } 
    else 
    { 
     ui->Status->setText("Status: Ready to LogIn"); 
    } 
} 

Login::~Login() 
{ 
    delete ui; 
} 

void Login::on_Login_2_clicked() 
{ 
    int username; 
    QString password; 
    username=ui->lineEdit_Username->text().toInt(); 
    password=ui->lineEdit_Password->text(); 
    if(!db.isOpen()) 
    { 
     qDebug()<<"Failed to open database"; 
     return; 
    } 
    QSqlQuery qry; 
    if(qry.exec("select * from user where User_ID='"+username+"' AND password'"+password+"'")) 
    { 
     int count=0; 
     while(qry.next()) 
     { 
      count++; 
     } 
     if(count==1) 
     { 
      ui->Login_status->setText("You have logged in"); 
     } 
     if(count>1) 
     { 
      ui->Login_status->setText("Something went wrong - please contact with admin"); 
     } 
     if(count<1) 
     { 
      ui->Login_status->setText("Failed to LogIn"); 
     } 
    } 


    else 
    { 
     ui->label->setText("Something is very Wrong "); 
    } 
} 

-Linie, die Fehler generiert:

if(qry.exec("select * from user where User_ID='"+username+"' AND password'"+password+"'")) 
+0

rohe Zeiger besitzen? Es gibt Smartpointer oder einfache Member-Variablen. –

Antwort

2

Sie fügen char*, int, char* und QString. Außerdem fehlt = in der Abfrage, und die Nummer sollte nicht in Anführungszeichen stehen. Es sollte sein:

if(qry.exec("select * from user where 
    User_ID="+QString::number(username)+" AND password='"+password+"'")) 

Aber bessere Idee ist Ihre Fragen vorzubereiten, diese Situation zu vermeiden:

qry.prepare("select * from user where User_ID=:userid AND password=':password'"); 
qry.bindValue(":userid",username); 
qry.bindValue(":password",password); 
qry.exec();