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(); } 
  • Ejemplo de cuenta de SQLite
  • Creación de una clase de modelo de datos para el manejo de bases de datos
  • Drop y recrear la tabla SQLite
  • Estrategia para actualizar la aplicación de Android (con base de datos)
  • Autocompletar de Android con SQLite LIKE funciona parcialmente
  • ¿JSON en un campo del sqlite?
  • ¿Qué desencadena SqliteDbOpenHelper onUpgrade ()?
  • SQlite Obteniendo las ubicaciones más cercanas (con latitud y longitud)
  • Advertencia: No codifique "/ data /"; Utilice Context.getFilesDir (). GetPath () en su lugar
  • Leer datos de sqlite cuando se está ejecutando una transacción (Android)
  • Consulta de actualización de base de datos SQLite con múltiples condiciones de ubicación en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.