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(); } 
  • La mejor manera de trabajar con las fechas en Android SQLite
  • InsertWithOnConflict () vs. Insertar o reemplazar
  • ¿Cómo popule ListView con elementos de la base de datos en Xamarin?
  • Cómo agregar segunda tabla en la base de datos en sqlite?
  • Consulta SQLite desde varias tablas utilizando SQLiteDatabase
  • GreenDAO crea una propiedad de ID automática
  • Tener varios SQLiteOpenhelper en una aplicación Android
  • Hacer inserciones SQLite eficientes con Android
  • ¿Por qué fue InsertHelper obsoleta?
  • Android json analizar y almacenar en la base de datos
  • SQLiteException cerca de "<" mientras se borra la consulta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.