Я пытаюсь создать логин, но не могу заставить работать основные проверки. Прежде чем авторизовать пользователей, мне нужно сначала проверить, существует ли имя пользователя в базе данных.
Я попытался реализовать функцию, аналогичную той, которая описана в этом посте: Android sqlite, как проверить, существует ли запись
но это не работает
protected void onCreate(Bundle savedInstanceState) {
database = this.openOrCreateDatabase("Users", MODE_PRIVATE, null);
database.execSQL("CREATE TABLE IF NOT EXISTS Account (name VARCHAR, password TEXT, email VARCHAR(1024), id INTEGER PRIMARY KEY)" );
//Add users for testing
database.execSQL("INSERT INTO Account (name, password, email) VALUES ('admin','password','admin@example.com')");
}
public boolean checkExists(String username){
//Check if exists in database
Cursor c = database.rawQuery("SELECT * FROM Account WHERE email= ' " + username + " ' ",null);
if(c.getCount() <= 0) {
c.close();
return false;
}
c.close();
return true;
}
public void loginBtn(View view){
unField = findViewById(R.id.unField);
String username = unField.getText().toString();
//Just to check if username is retrieved from EditText field
Log.i("Input:", username);
if(checkExists(username)){
Log.i("Check:", "PASSED");
}
}
РЕДАКТИРОВАТЬ: функция, кажется, возвращает ложь. Что-то не так с записью в базе данных? Кажется, это не добавляет ценности.
РЕДАКТИРОВАТЬ: Это работает после того, как я изменил интервал:
Cursor c = database.rawQuery("SELECT * FROM Account WHERE email= '" + username + "'",null);