0

次のコードを使用してレコードを取得しました。

String getCredentialsFromAdmint(String name ,String pwd) {
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(TABLE_ADMIN, new String[] { KEY_ID,
                KEY_A_USER_NAME, KEY_A_PWD }, KEY_A_USER_NAME + "=?" + " AND " + KEY_A_PWD + "=?",
                new String[] { name , pwd }, null, null, null, null);

        if (cursor != null){
            cursor.moveToFirst();
        return cursor.getString(1);
        }
        else{
            return "norecord";
        }

このコードは、レコードがある場合は機能しますが、レコードが見つからない場合、アプリケーションはエラーを受け取ります。データベースからデータを取得する他の方法はありますか?

4

3 に答える 3

1

コードを次のように変更します

 if ( cursor.moveToFirst()){
      return cursor.getString(1);
    } else{
        return "norecord";
    }
于 2012-07-03T12:14:32.497 に答える
0

cursor.moveToFirst()true を返すかどうかはチェックしません。

次のようになります。

if (cursor != null) {
   if(cursor.moveToFirst()){
       return cursor.getString(cursor.getColumnIndexOrThrow(KEY_A_USER_NAME));
   } else{
     //no record
   }
} else {
   //invalid uri
}
于 2012-07-03T12:14:03.227 に答える
0

代わりに次のコードを使用してみてください

if (cursor != null){
    cursor.moveToFirst();
    if(cursor.isAfterLast() == false) {
    return cursor.getString(1);
    }
    else
    {
    return "norecord";
    }
}
else{
    return "norecord";
}
于 2012-07-03T12:14:03.683 に答える