Я пытался создать базу данных на android . База данных сохраняется (я использовал программу просмотра mySQL для просмотра базы данных). Но когда я пытаюсь проверить конкретную запись с помощью boolean, она всегда возвращает истину.

MainActivity.java

  public void onClick(View view) {
        // TODO Auto-generated method stub
        switch(view.getId()){
        case R.id.save:
            db.addContact(new Contact(input.getText().toString(), "9100000000"));
            auth.setText("save");
            break;
        case R.id.check:
            auth.setText("check");          
            if(db.getContact(output.getText().toString())){
                auth.setText("Sucess");
            }
            else{
                auth.setText("Fail");
            }
            break;
        }
    }

< Сильный > DatabaseHandler.java

// Getting single contact
public boolean getContact(String id) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
                KEY_NAME, KEY_PH_NO }, KEY_NAME + "=?",
                new String[] { String.valueOf(id) }, null, null, null, null);
        if (cursor != null){
            cursor.moveToFirst();
            return true;
        }

        return false;
    }
2
Kenneth Joseph Paul 15 Дек 2013 в 04:46
1
Думаю, что SQLiteDatabase.query никогда не возвращает null; просто пустой курсор
 – 
amdixon
15 Дек 2013 в 05:01

1 ответ

Лучший ответ

Я бы попробовал внести одно изменение ... Вызовите getCount ( ) метод.

// I think you don't need this null check, but it shouldn't hurt anything.
if (cursor != null){
  // cursor.moveToFirst(); /* I don't think you need this either. */ 
  return (cursor.getCount() > 0);
}
return false;
2
Elliott Frisch 15 Дек 2013 в 05:27