2013-03-28 8 views
0

Я разрабатываю небольшое приложение, в которое я вставляю два значения в базу данных (номер телефона и адрес). Сделано с вставкой. Теперь я хотел бы найти соответствующий адрес для определенного номера телефона. Я следил за учебником от Android-хоста, и это получилось довольно хорошо. Моя проблема в том, что когда я вставляю конкретный номер телефона (который уже хранится в базе данных) и нажимаю кнопку поиска, My TextView не отображает соответствующий адрес. Он просто отображает «имя» в этом тексте. Я уверен, что я нигде не закодировал текст «имя». И я тоже не получаю никакой конкретной ошибки.Извлечение правильного значения из базы данных sqlite в Android

Вот код для моего buttonSearch:

buttonSearch.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       long phone_number=Long.parseLong(searchEditText.getText().toString()); 

      String text=db.getAddress(phone_number); 
      fetchedAddressTextView.setText(text); 
      } 

И это getAddress метод, определенный в моем Helper классе:

public String getAddress(long phone_number) { 
     // TODO Auto-generated method stub 
     SQLiteDatabase db = this.getReadableDatabase(); 


     try { 
      Cursor c=db.query(TABLE_CONTACTS, new String[]{ 
        KEY_ADDRESS 
      }, 
      KEY_PH_NO + "=" + phone_number, 
      null, 
      null, 
      null, 
      null); 

      if (c != null) { 
       c.moveToFirst(); 
      } 
     } 
      catch (Exception e) { 

       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     return KEY_ADDRESS; 
    } 

KEY_ADDRESS должен возвращать адрес, соответствующий номеру, я искал в виде строки.

Так что любая помощь с этой проблемой оценивается. Или любые другие указатели, касающиеся простой выборки хранимых значений в базе данных (другие, например, vogella или androidhive), приветствуются.

Спасибо заранее.

ответ

1

Ваш код возвращает имя столбца вместо значения. Пожалуйста, проверьте код ниже c.moveToFirst(); заявление

public String getAddress(long phone_number) { 
     // TODO Auto-generated method stub 
     SQLiteDatabase db = this.getReadableDatabase(); 


     try { 
      Cursor c=db.query(TABLE_CONTACTS, new String[]{ 
        KEY_ADDRESS 
      }, 
      KEY_PH_NO + "=" + phone_number, 
      null, 
      null, 
      null, 
      null); 

      if (c != null) { 
       c.moveToFirst(); 
       return c.getString (c.getColumnIndex (KEY_ADDRESS)); 
      } 
     } 
      catch (Exception e) { 

       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     return ""; 
    } 
+0

спасибо тонну @Amit. работал как шарм! –

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