1

ユーザー名がデータベースに存在するかどうかを調べようとしています。存在する場合はブール変数がtrueに設定され、存在しない場合はfalseに設定されます。ユーザー名がテーブルに存在しない場合でも、変数は常にtrueに設定されているようです。テーブルのデータを確認して何度も試しましたが、変数は常にtrueに設定されており、ユーザー名がデータベースにあるかどうかに関係なく、「ユーザー名が存在します」というメッセージが常に表示されます。これは私のコードです。私は何が間違っているのですか?

----ボタンを定義し、テキストフィールドを編集し、ログインボタンがクリックされたときにメッセージを表示するログインクラス-------------

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;
}
}
4

1 に答える 1

1

カーソルがnullかどうかを確認する代わりに、カーソルにデータが含まれているかどうかを確認してみてください。次に例を示します。

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

getCount()は、クエリによって返された行数を返します。

于 2012-06-12T18:33:31.027 に答える