2016-06-21 19 views
-1

Ich versuche, eine einfache Anmeldung zu erstellen mit sQLite in C++ und wenn ich den Code zu kompilieren, es erscheint mir diese Fehlermeldung:Login mit SQLite in C++ [Fehler] kann 'bool' nicht konvertieren zu 'const char *' für Argument '1' zu 'int strcmp (const char *, const char *)'

„[Fehler] nicht konvertieren 'Bool' auf 'const char *' für Argument '1' bis‚int strcmp (const char *, const char *) '“

Das Verfahren, bei dem er den Fehler erscheint, ist dieses:

int iniciarSesion(sqlite3 *db,char log[], char pass[]){ 



sqlite3_stmt *stmt; 

char sql[] = "select login,password from usuario where login=?" ; 

int result = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) ; 
if (result != SQLITE_OK) { 

    return result; 
} 

result = sqlite3_bind_text(stmt, 1, log, strlen(log), SQLITE_STATIC); 
if (result != SQLITE_OK) { 

    return result; 

} 


char login[100]; 
char password[100]; 

do { 
    result = sqlite3_step(stmt) ; 
    if (result == SQLITE_ROW) { 
     // busca dentro de la bd fila por fila 
     strcpy(login, (char *) sqlite3_column_text(stmt, 1)); 
     strcpy(password, (char *) sqlite3_column_text(stmt, 2)); 

     if(strcmp((password,pass)!=0){ 

       cout<<"incorrect login... try again"<<endl; 
       cout<<""<<endl; 
      }else{ 

     cout<<"correct Login!"<<endl; 
     cout<<""<<endl; 
     menuPrincipal(); 
     } 
    } 

}while (result == SQLITE_ROW); 

cout<<endl; 
cout<<endl; 

result = sqlite3_finalize(stmt); 
if (result != SQLITE_OK) { 
    //cout<<"Error finalizing statement (SELECT)"<<endl; 


    return result; 
} 

//cout<<"Prepared statement finalized (SELECT)"<<endl; 

return SQLITE_OK; 
} 
+0

Schauen Sie sich die Zeile mit dem Aufruf 'strcmp' an und zählen Sie die Anzahl der Klammern (' ('und') '). –

+0

Sie haben eine zusätzliche Klammer an Ihrer 'strcmp' und eine Million und eine nachfolgende Fehler. –

Antwort

1

Sie haben einen Syntaxfehler in:

if(strcmp((password,pass)!=0){ 

machen:

if(strcmp(password,pass)!=0){ 
+0

vielen dank für ihre unterstützung !! du hast meinen Tag gerettet – Ans

0

Sie haben zwei Klammern in Ihren Anruf strcmp:

strcmp((password,pass)!=0) 

Dies wertet tatsächlich die operator, die gibt das zweite Argument zurück. Danach verwenden Sie operator!=, die bool zurückgibt. Da dies nicht der richtige Typ ist, der strcmp erwartet (const char*), erhalten Sie Ihren Fehler.

Verwandte Themen