2014-04-16 5 views
2

Actuellement ayant un problème dans ma base de données SQLite dans android, lorsque j'essaie d'exécuter une comparaison, j'obtiens l'erreur suivante: Causée par: android.database.sqlite.SQLiteException: près de "@hotmail": syntaxe erreur:, lors de la compilation: SELECT DISTINCT _id, userName, mot de passe uSERTABLE OÙ Mot de passe [email protected] = shshshException de base de données Android SQLite

ma recherche est:

public boolean getUserNameAndPassword (String nomUtilisateur, String Mot de passe) throws SQLException {

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER + "=" + userName + "AND password=" + Password, null, 
        null, null, null, null); 

    if (mCursor.getCount() > 0) 
    { 
     return true; 
    } 
    return false;} 

Ma tentative de l'exécuter est la suivante:

boolean signIn = dbHelper.getUserNameAndPassword(mEmail, mPassword); 
     if (signIn){ 
      Toast.makeText(getBaseContext(),"Sign in successful",Toast.LENGTH_LONG).show(); 
     }else {Toast.makeText(getBaseContext(),"Sign in failed",Toast.LENGTH_LONG).show();} 

Merci à l'avance!

+0

c'est exactement pourquoi vous devriez utiliser 'selectionArgs' et' '?. – njzk2

Répondre

1

SELECT DISTINCT _id, userName, password FROM userTable WHERE [email protected] password=shshsh

Vous avez oublié un espace entre userName et AND.

En outre, jetez un oeil à la réponse de John à propos des requêtes paramétrées.

2

Vous devriez utiliser une des requêtes paramétrées au lieu de simplement l'ajout dans les variables nom d'utilisateur et mot de passe, voir l'exemple ci-dessous:

Cursor mCursor = 
     db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
       PWD},USER + " = ? AND password = ?", new String[]{ userName, Password }, 
       null, null, null, null); 

if (mCursor.getCount() > 0) 
{ 
    return true; 
} 
return false;} 
+1

Vous devez également supprimer le mot de passe à partir de la requête :) – nhaarman

+0

Salut John, merci pour la réponse rapide, j'ai changé pour ce que vous avez dit mais je reçois toujours: Causé par: android.database.sqlite.SQLiteException: près "example": erreur de syntaxe:, lors de la compilation: SELECT DISTINCT _id, nom_utilisateur, mot de passe FROM userTable WHERE nom_utilisateur =? AND password =? Example – user3535757

+0

Je ne vois pas où le mot 'example' est en train d'entrer dans la requête. –

0

Vous avez oublié un espace, essayez maintenant:

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER + "='" + userName + "' AND password='" + Password + "'", null, 
        null, null, null, null); 

    if (mCursor.getCount() > 0) 
    { 
     return true; 
    } 
    return false;} 

Edit: En outre, vous devriez penser à utiliser des requêtes paramétrées comme le propose John.

+0

Salut là, avec votre solution, je reçois l'erreur suivante: Causé par: android.database.sqlite.SQLiteException: près de "@hdjsj": erreur de syntaxe:, lors de la compilation: SELECT DISTINCT _id, userName, mot de passe FROM userTable WHERE userName = [email protected] AND password = sjsjsj – user3535757

+0

Regardez mon edit ... maintenant je pense que ça devrait marcher – Rafag

0

essayez ceci:

Cursor mCursor = 
      db.query(true, TABLE_NAME, new String[] {KEY_ROWID,USER, 
        PWD},USER+"='"+userName+"' AND password='"+Password+"'", null, 
        null, null, null, null); 
Questions connexes