Tenho uma tabela para informações do usuário e preciso obter a senha do usuário e o nome do usuário Consulta:
Cursor cursor = db.rawQuery("select "+User.COL_NAME +User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+ User.COL_PASS +"=?", new String[]{UserName , PassWord});
Mas eu não posso fazer isso, a mensagem de erro é:
Caused by: android.database.sqlite.SQLiteException: no such column: UserNamePassword (code 1): , while compiling: select UserNamePassword from users WHERE UserNamePassword=?
Este é o meu código
public String getUserByUserAndPassword(String UserName , String PassWord) {
String All_info="" ;
Cursor cursor = db.rawQuery("select "+User.COL_NAME +User.COL_PASS +" from " + User.TABLE_NAME+" WHERE "+User.COL_NAME+ User.COL_PASS +"=?", new String[]{UserName , PassWord});
while (cursor.moveToNext()) {
String user_1 = cursor.getString(cursor.getColumnIndex(User.COL_NAME));
String pass_1 = cursor.getString(cursor.getColumnIndex(User.COL_PASS));
All_info= user_1+"/"+pass_1;
}
cursor.close();
return All_info ;}
Causado por: android.database.sqlite.SQLiteException: nenhuma coluna: UserNamePassword (código 1) :, durante a compilação: selecione UserNamePassword dos usuários WHERE UserNamePassword =?
Sua consulta contém erros de sintaxe, mas primeiro quero mencionar outras partes do seu código que estão logicamente erradas.
Sua consulta deve retornar 0
ou 1
linha porque acho que não há caso de 2 usuários com o mesmo nome de usuário, certo?
Portanto, não há necessidade de um while
loop. Uma if
declaração simples é suficiente.
Além disso, por que você deseja que a consulta retorne o nome de usuário e a senha?
Você já os conhece porque os usa para pesquisar este usuário.
Se não houver nenhum usuário com esses dados, a consulta não retornará nada.
Portanto, altere sua consulta para:
Cursor cursor = db.rawQuery(
"SELECT COUNT(*) FROM " + User.TABLE_NAME +
" WHERE "+ User.COL_NAME + " = ? AND " + User.COL_PASS +" = ?",
new String[]{UserName , PassWord}
);
Esta consulta retornará apenas 1 linha com 1 coluna inteira com valor 0
se não houver tal usuário e 1
se houver.
E o resto do código precisava:
if (cursor.moveToFirst()) {
int counter = cursor.getInt(0);
if (counter > 0) {
All_info= UserName + "/" + PassWord;
}
}
cursor.close();
return All_info;
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras