2012-06-12 5 views
1

Я пытаюсь найти, существует ли имя пользователя в базе данных, если оно существует, тогда для переменной в буле будет установлено значение true, если не будет установлено значение false. Кажется, что переменная всегда установлена ​​в true, даже если имя пользователя не существует в таблице. Я проверил данные в таблице и много раз пробовал, но переменная всегда имеет значение true, и сообщение «Username exists» всегда отображается независимо от того, находится ли имя пользователя в базе данных или нет. Это мой код. Что я делаю не так?Поиск, если введенное значение существует в таблице

---- Войти Класс, который определяет, что кнопки и редактировать текстовые поля и увольняет сообщение, когда кнопка нажата Войти -------------

public class Login extends Activity{ 
Button sqllogin; 
EditText sqlusername, sqlpassword; 

@Override 
    protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    sqlusername = (EditText) findViewById(R.id.etuname1); 
    sqlpassword = (EditText) findViewById(R.id.etpass); 


    sqllogin = (Button) findViewById(R.id.bLogin); 
    sqllogin.setOnClickListener(new View.OnClickListener() { 

      //Method that fires a message when the Login button is clicked 

     public void onClick(View v) { 
      switch (v.getId()){ 
      case R.id.bLogin: 
      String username = sqlusername.getText().toString(); 
      String password = sqlpassword.getText().toString(); 

      DBAdapter entry = new DBAdapter(Login.this); 
      entry.open(); 
      boolean r = entry.findUsername(username); 
      if(r == true){ 
       Toast.makeText(Login.this, "Username Exists", Toast.LENGTH_LONG).show(); 
      } 
      else{ 
       Toast.makeText(Login.this, "Username does not Exists", Toast.LENGTH_LONG).show(); 
      } 
      entry.close(); 
      break; 
     } 
     } 
    }); 
} 
} 

--- ------ Метод в классе DBAdpater, который проверяет, существует ли в таблице имя пользователя ------------

public boolean findUsername(String username) { 
Cursor c = ourDatabase.query(true, DATABASE_TABLE_L, new String[] { 
     KEY_USERNAME, KEY_PASSWORD}, KEY_USERNAME + "='" 
     + username +"'", null, null, null, null, null); 
if (c!= null) { 
    return false; 
} 
else{ 
    return false; 
} 
} 

ответ

1

Вместо проверки, нет ли курсора null, проверьте, содержит любые данные, например:

if(cursor.getCount()!=0) 
    return false; 
else 
    return true; 

getCount() возвращает количество строк, возвращаемых запросом.

+0

или 'return (cursor.getCount() == 0)' для простоты – MAV

+0

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

+0

Спасибо большое всем. Теперь он отлично работает :) –

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