2017-08-17 1 views
-1

Je crée un identifiant pour l'application mobile Android, mais pour certaines raisons que je ne sais pas, lorsque je clique sur le bouton de connexion, il bloque l'application. Y at-il quelque chose qui ne va pas avec mes codes que je ne peux pas voir? J'ai regardé les codes ligne après ligne, mais je ne trouve rien d'anormal. Voir les codes ci-dessousEn cliquant sur un bouton ferme l'application en cours d'exécution sur l'émulateur

import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Login extends AppCompatActivity implements View.OnClickListener { 
Button _login_button; 
EditText _AbovePNDUsername, _AbovePNDPassword; 
SQLiteDatabase db; 
SQLiteOpenHelper openHelper; 
Cursor cursor; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    openHelper = new RegisterUserinDatabase(this); 
    db = openHelper.getReadableDatabase(); 
    _login_button = (Button) findViewById(R.id.login_button); 
    _AbovePNDUsername = (EditText) findViewById(R.id.AbovePNDUsername); 
    _AbovePNDPassword = (EditText) findViewById(R.id.AbovePNDPassword); 
    _login_button.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 


    if (v.getId() == R.id.login_button) { 

     String username = _AbovePNDUsername.getText().toString(); 
     String password = _AbovePNDPassword.getText().toString(); 
     cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + "WHERE" 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND" + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password}); 
     if(cursor != null) 
     { 
      if(cursor.getCount()> 0){ 
       cursor.moveToNext(); 

       Toast.makeText(getApplicationContext(), "login successfully", Toast.LENGTH_LONG).show(); 
       startActivity(new Intent(this, add_treatment.class)); 
      } 
      else { 

       Toast.makeText(getApplicationContext(), "error in login", Toast.LENGTH_LONG).show(); 
      } 

     } 

    } 
} 

}

+1

Veuillez ajouter le journal de panne. – Bob

Répondre

2

Vous devez laisser des espaces à côté des mots-clés (OU, ET) de votre requête SQLite.

cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + " WHERE " 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND " + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password}); 
+0

Cela a résolu le problème. Merci beaucoup – Omade

+0

Si cela fonctionne, pourriez-vous s'il vous plaît upvote et marquer la réponse comme correcte. – Bob

+0

J'ai 2 minutes de plus pour le faire. Merci – Omade

2

Votre requête est erroné:

"SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + "WHERE" 

À moins que votre TABLE_NAME se termine par l'espace, cela produira

SELECT * FROM TABLEWHERE 

Ce qui est bien sûr incorrecte SQL

Cela devrait fonctionner:

cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + " WHERE " 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND " + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password});