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 

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(); } 
  • SQLite y almacenamiento de imágenes
  • Copia de seguridad de Android y restauración de la base de datos desde y hacia la tarjeta SD
  • Prueba de Android JUnit para SQLiteOpenHelper
  • ¿Qué es un buen tutorial para usar ORMLite con SQLite y Android
  • ¿Cómo puedo mantener mi base de datos en una tarjeta SD y utilizar ORMLite?
  • Evite borrar los datos de la base de datos al hacer clic en el botón "borrar datos" en la configuración de la aplicación en el dispositivo Android
  • Multi-parámetro en ActiveAndroid
  • Android SQLite - ¿qué hace SQLiteDatabase.replace () en realidad?
  • Cómo implementar herencia de tabla en GreenDao
  • ¿Cómo lograr límite de palabras en Sqlite Android?
  • ¿Cómo usar SQLiteOpenHelper con la base de datos en sd-card?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.