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:
- Cómo almacenar la clave utilizada en SQLCipher para android
- Comprueba si la consulta ha tenido éxito en sqlite para Android
- Android ContentProvider llama ráfagas de setNotificationUri () a CursorAdapter cuando se insertan muchas filas con una operación por lotes
- en un Listview en el artículo de la lista chasquido ¿cómo puedo conseguir el título (el nombre) del artículo seleccionado? androide
- Exención de SQLite sobre la reanudación de la actividad de Android
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
- SQLite Android: parámetro nullColumnHack en los métodos insert / replace
- Obtener nueva fila agregada en la tabla SQLite
- Cómo hacer una copia de seguridad / restaurar la base de datos SQLite en Android a Dropbox
- Android: falló a setLocale () al construir, cerrando la base de datos
- Android ContentProvider Esquema de URI para notificar a CursorAdapters escuchando consultas de OUTER JOIN
- Obteniendo la última fila de la base de datos sqlite
- Android sqlite - Cómo administrar un valor entero en la cláusula where
- Eliminación de fila en SQLite 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(); }
- MapActivity con el marco de cargador
- Android NDK – Biblioteca no encontrada CAN NOT LINK EXECUTABLE – cómo configurar LD_LIBRARY_PATH?