AndroidとSQLiteを使用してデータベースからブール値を取得する


169

AndroidのSQLiteデータベースでブールフィールドの値を取得するにはどうすればよいですか?

私は通常、フィールドの値を取得するためgetString()getInt()、などを使用しますが、getBoolean()メソッドがないようです。

回答:




23
boolean value = (cursor.getInt(boolean_column_index) == 1);

この質問に正確に対応していなくても(Alexが最も近い)、これは優れた回答です。これを使用します。
Budimir Grom、2014

10

ここでの回答のほとんどは、NumberFormatExceptionsまたは「演算子がnull型に定義されていません」という結果になる可能性があります。これを行う適切な方法は、使用することです

Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`

ただし、0または1ではなく、「true」と「false」の文字列の保存に制限されています。


5
これは動作しません。Boolean.parseBooleanは「true」または「false」の文字列を取ります。ブール値を0または1として保存した場合、常にfalseになります。
Gober 2013

Goberの発言が真実である場合、この回答は反対票を投じるに値します
Shervin Asgari '11 / 10/18

ああ、彼は正しい。結果を明確にすることは、文字列を保存する必要よりも重要だと思います。
Sojurn 2013年

1
@ShervinAsgariのその他の回答では、ブール値をtrueまたはfalseとして保存すると、常にfalseになります。だからあなたのロジックでそれも反対投票する必要があります。
Arda Kara

6

Ormlite Cursorで見つかった実装は、Nullについてもチェックしますが、他の回答ではこれを行いません。

   public boolean getBoolean(int columnIndex) {
        if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
            return false;
        } else {
            return true;
        }
    }

6

あなたも使うことができます

boolean value =cursor.getString(boolean_column_index).equals("True");

5
equals()は含まない
2013年


3

boolean データタイプは利用できません Cursor

結果はで取得されるため、intそのint値をに変換する必要がありますboolean

あなたはどちらかを使うことができます

boolean b = cursor.getInt(boolean_column_index) > 0;

または

boolean b = (cursor.getInt(boolean_column_index) != 0);


0

まあ、それはとても簡単です:

public boolean getBooleanState(SQLiteDatabase db){
    boolean result = false;
    try{
        String QUERY = "SELECT " + BOOLEAN_DATA + " FROM " + TABLE_NAME + " WHERE " + ID + " = 1";
        Cursor cursor = db.rawQuery(QUERY, null);
        if (cursor.moveToFirst()){
            if(cursor.getString(0).equalsIgnoreCase("1")){
                result = true;
            }
        }
        c.close();
    }catch(Exception ee){
        Log.e(TAG, "err getBooleanState: " + TABLE_NAME );
    }
    return result;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.