2013-07-16 3 views
1

В моей деятельности у меня есть editText's (Имя пользователя, имя, фамилия и адрес электронной почты). Когда пользователь вводит существующее имя пользователя, он может выполнить поиск по нему, нажав кнопку поиска , и данные, которые пользователь имеет, будут отображаться в файле editText.Поиск записи и извлечение ее из базы данных в Android

MainActivity.java

btn_Search.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View arg0) { 
     String searchableUser = txt_User.getText().toString(); 

     ConsUserRegistration consUserRegistration = db.searchUser(searchableUser); 

     String searchUser = consUserRegistration.getUser().toString(); 
     String searchFirst = consUserRegistration.getFirstName().toString(); 
     String searchLast = consUserRegistration.getLastName().toString(); 
     String searchEmail = consUserRegistration.getEmail().toString(); 

     txt_User.setText(searchUser); 
     txt_First.setText(searchFirst); 
     txt_Last.setText(searchLast); 
     txt_Email.setText(searchEmail);    
    } 
}); 

DatabaseHandler.java

public ConsUserRegistration searchUser(String username){ 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.query(Constants.TABLE_USER, new String[] {Constants.KEY_USER, Constants.KEY_FIRST, 
      Constants.KEY_LAST, Constants.KEY_EMAIL}, Constants.KEY_USER + " =? ", 
      new String[] { String.valueOf(username) }, null, null, null); 
    if (cursor != null) 
     cursor.moveToFirst(); 

    ConsUserRegistration search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3)); 

    return search; 

} 

Но когда пользователь нажимает кнопку Search и не ввести любой символ из Логин EditText, я получаю ошибку CursorIndexOutOfBoundsException в DatabaseHandler в строке: ConsUserRegistration search = new ConsUserRegistration (cursor.getString (0), cursor.getString (1), cursor.getString (2), cursor.getString (3));

Кроме того, я не смог получить данные из базы данных, так как это сбой.

+0

, что ваша проблема –

+0

К сожалению, мне очень жаль. Просто отредактировал мой вопрос – androidBoomer

+0

nullPointerExceptions, у которого строка кода? См. Лог-код. –

ответ

1

Изменить

db.searchUser(searchableUser); 
ConsUserRegistration consUserRegistration = new ConsUserRegistration(); 

в

ConsUserRegistration consUserRegistration = db.searchUser(searchableUser); 
+0

Ваш предлагаемый код работает, однако, когда я не вводил Username, я получаю CursorindexOutOfBoundsException в DatabaseHandler в строке: ConsUserRegistration search = new ConsUserRegistration (cursor.getString (0), cursor.getString (1), cursor.getString (2), cursor.getString (3)); – androidBoomer

+0

Проверить значение null перед использованием string edittext .. – Tarun

+0

Как это сделать в моих кодах? – androidBoomer

-2

Кнопка button_Search (кнопка) findViewById (r.I'd.itsIdInYourXml);

Button, вероятно, нуждается в объявленном или определен дополнительно должен видеть весь код

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