Recuperar un nombre de usuario y una contraseña en SQLITE DB por EMAIL_ADDRESS en ANDROID

Necesito obtener un nombre de usuario y una contraseña … Estoy haciendo la recuperación de contraseñas en mi aplicación así que aquí está mi código para DB:

public String getEmailAddr() throws SQLException { Cursor mCursor = db.rawQuery( "SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE EmailNO=?",null); if (mCursor != null) { if(mCursor.getCount() > 0 { //return obj1.getpassword(); } } //return false; return obj1.getpassword(); } 

Y cuando el usuario ingrese una dirección de correo electrónico primero debe comprobar la existencia y devolver la contraseña y el nombre de usuario con el uso de mi código de actividad para el envío de correo electrónico:

 public void onClick(View v) { String EmailAddress = txtEmailAddress.getText().toString(); try { if(EmailAddress.length() > 0) { DBAdapter dbUser = new DBAdapter (RecoverPassword.this); dbUser.open(); if(dbUser.getEmailAddress(EmailAddress)) { Toast.makeText(RecoverPassword.this, "Email Successfully ", Toast.LENGTH_LONG).show(); Toast.makeText String to = txtEmailAddress.getText().toString(); //String subject = EmailAddress.getText().toString(); // String message = EmailAddress.getText().toString(); Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to}); email.putExtra(Intent.EXTRA_SUBJECT, "Password Recovery"); email.putExtra(Intent.EXTRA_TEXT, dbUser.getEmailAddr()); //need this to prompts email client only email.setType("message/rfc822"); startActivity(Intent.createChooser(email, "gmail :")); } else { Toast.makeText(RecoverPassword.this, "Invalid Email", Toast.LENGTH_LONG).show(); txtEmailAddress.setText(""); } dbUser.close(); } } catch(Exception e) { Toast.makeText(RecoverPassword. this,e.getMessage(), Toast.LENGTH_LONG).show(); } Please help me to check what is wrong...but there is no error but it cant return username and password to the email sent 

2 Solutions collect form web for “Recuperar un nombre de usuario y una contraseña en SQLITE DB por EMAIL_ADDRESS en ANDROID”

Estoy confundido con tu código, pero cuando quieres obtener datos de Cursor

 String[] whereArgs = new String[<data>]; Cursor mCursor = db.rawQuery("SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE EmailNO = ?", whereArgs); mCursor.moToFirst(); if(mCursor.getCount() > 0} { String userName = mCursor.getString(0); String password = mCursor.getString(1); } 

Debe utilizar getters que ofrece la instancia Cursor que devuelve datos de la base de datos.

EDITAR:

No he notado que usted utiliza whereArgs así que cuando usted utiliza la cláusula de WHERE , usted tiene que whereArgs específico como String[] que contiene los datos que serán substituidos en vez de ? carbonizarse.

Para cerrar la base de datos puede utilizar:

 @Override protected void onDestroy() { super.onDestroy(); if (yourDatabase != null) { yourDatabase.close(); } } 

O después de cada trabajo que abre su db debe close() db.

En

 Cursor mCursor = db.rawQuery("SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE EmailNO=?",null); 

No está proporcionando el valor de EmailNO. Ponga el valor en lugar de null .

Edit: Creo que su código debe ser así:

 public boolean getEmailAddress(String emailNo) throws SQLException { //pass the EmailNo which you want in where clause Cursor mCursor = db.rawQuery( "SELECT Username, Passwords FROM sddashsd WHERE EmailNO='"+emailNo+"'",null); if (mCursor != null) { if(mCursor.getCount() > 0) return true; else return false; } } 

Y edite su código aquí:

 public void onClick(View v) { String EmailAddress = txtEmailAddress.getText().toString(); try { if(EmailAddress.length() > 0) { DBAdapter dbUser = new DBAdapter (RecoverPassword.this); dbUser.open(); if(dbUser.getEmailAddress(EmailAddress)) { Toast.makeText(RecoverPassword.this, "Email Successfully ", Toast.LENGTH_LONG).show(); String to = txtEmailAddress.getText().toString(); //String subject = EmailAddress.getText().toString(); // String message = EmailAddress.getText().toString(); Intent email = new Intent(Intent.ACTION_SEND); email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to}); email.putExtra(Intent.EXTRA_SUBJECT, "Password Recovery"); email.putExtra(Intent.EXTRA_TEXT, dbUser.getEmailAddr()); //need this to prompts email client only email.setType("message/rfc822"); startActivity(Intent.createChooser(email, "gmail")); } else { Toast.makeText(RecoverPassword.this,"Invalid Email", Toast.LENGTH_LONG).show(); txtEmailAddress.setText(""); } } } catch(Exception e) { Toast.makeText(RecoverPassword.this, e.getMessage(), Toast.LENGTH_LONG).show(); } finally { dbUser.close(); } 
  • Android SQLiteMisuseException al llamar a database.rawQuery
  • Recuperar blob de gran tamaño de la base de datos Android sqlite
  • Cursor.getType () y CursorIndexOutOfBoundsException excepción
  • ¿Está bien tener una instancia de SQLiteOpenHelper compartida por todas las actividades en una aplicación de Android?
  • Tabla de puntuaciones altas
  • ¿Cómo puedo borrar una base de datos SQLite cada vez que inicie mi aplicación?
  • NotifyChange con uri modificado de contentProvider.update ()
  • Android Guardar imágenes en una tarjeta de memoria o en una tarjeta SD
  • Arrastrar y soltar RecyclerView que se rellena desde SQLiteDatabase
  • Sqlite actualiza una columna basada en la cláusula where android
  • Android json analizar y almacenar en la base de datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.