2015-02-23 2 views
0

Я делаю приложение для Android и atm. Я не знаю, была ли создана моя база данных. Я проверил свой Logcat, и я не вижу никаких признаков, если моя регистрация была добавлена, но отображает тост «Успешно зарегистрированный»Android SQL: Как проверить существующих пользователей?

Я проверил DDMS File explorer, он не отображает базу данных, но я прочитал, что некоторые из них могут ее не показывать, но в любом случае я хочу проверить, добавлено ли это, добавив проверку существующего имени пользователя.

ответ

0

Предположив, что имя пользователя является уникальным, вы должны запросить для пользователя строки которого имя пользователя совпадает с именем пользователя вы хотите получить:

public boolean exits(String username){ 
    boolean exists=false; 
    SQLiteDatabase db = this.getReradableDatabase(); 

    Cursor cursor=db.rawQuery("SELECT * FROM "+help.TABLE_NAME+" WHERE "+help.COLUMN_USERNAME+" ='"+username+"' ;"; 

    if(cursor!=null && cursor.getCount()>0) exists=true; 
    cursor.close(); 
    db.close(); 

    return exists; 
} 

Итак, для того, чтобы проверить, не существует пользователь и зарегистрировать его, вам нужно сделать следующее в ваш метод OnClick:

if (!password.equals(confirm)) { 

    Toast.makeText(getApplicationContext(), "Password does not match", Toast.LENGTH_LONG).show(); 
     return; 
} 
else if (handler.exists(name)){ 
Toast.makeText(getApplicationContext(), "User exists", Toast.LENGTH_LONG).show(); 

return; 
} 
else { 

    handler.addUser(name, username, password); 
    Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
0

Вам нужно вызвать rawQuery на вашей базе данных, чтобы выбрать строку с определенным именем:

public boolean exists(String username){ 
    Cursor c = db.rawQuery(String.format("SELECT %s FROM %s WHERE %s = ? LIMIT 1", 
      help.COLUMN_NAME, help.TABLE_NAME, help.COLUMN_NAME), 
      new String[] { username }); 

    return c.moveToFirst(); 
} 

Это приведет к возврату true, если пользователь с таким именем существует, а в противном случае - false.

Ответ на ваш комментарий:

... 
else if (handler.exists(username)) { 
    Toast.makeText(getApplicationContext(), "This username already taken", Toast.LENGTH_LONG).show(); 
    return; 
} else { 
    handler.addUser(name, username, password); 
    Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); 
    finish(); 
} 
+0

Из исходного запроса, когда пользователь в registertation Имя пользователя текстовое поле «Студент», например, и заполняет остальную часть формы, когда пользователь щелкает кнопкой учетной записи. Как я могу реализовать это в register.java для сравнения – user24343

+0

@LearnFred просто добавляет еще один блок else. Обновил мой ответ на примере. – Simas

+0

спасибо за исходный запрос, есть ошибка на нем, получилась эта ошибка: Причина: android.database.sqlite.SQLiteException: рядом с «1»: синтаксическая ошибка (код 1): при компиляции: SELECT TOP 1 name FROM USERS WHERE name =? – user24343

0
public boolean isRecordExist(String value) { 
     boolean exist = false; 
     SQLiteDatabase db = this.getReadableDatabase(); 
     String sql = "select * from " + TABLE_NAME; 
     if (value != null) { 
      sql = sql + " where <coloumn_name> = '" + value + "'"; 
     } 
     Cursor c = db.rawQuery(sql, null); 
     if (c != null) { 
      if (c.getCount() > 0) 
       exist = true; 
     } 
     c.close(); 
     db.close(); 
     return exist; 

    } 
Смежные вопросы