web-dev-qa-db-ja.com

AndroidおよびSQLiteを使用してデータベースからブール値を取得します

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

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

166
Kevin Bradshaw

それは:

boolean value = cursor.getInt(boolean_column_index) > 0;
344
Alex Orlov

SQLiteにはboolデータ型はありません。 0または1に固定したintを使用して、その効果を実現します。 SQLite 3.datatypes reference を参照してください。

45
NG.
boolean value = (cursor.getInt(boolean_column_index) == 1);
21
Elvis

ここでの回答のほとんどは、NumberFormatExceptions、またはintを格納した列がnullを保持することを許可されている場合、「演算子はnull、int型に対して未定義」になります。これを行う適切な方法は、使用することです

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

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

9
Sojurn

使用することもできます

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

Ormlite Cursor にある実装は、他の回答ではないNullもチェックします。

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

booleanデータ型はCursorでは使用できません。

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

どちらかを使用できます

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

または

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

別のオプション

boolean value = (cursor.getString(column_index)).equals("1");
3
Gokhan Arik

ブールb =(cursor.getInt(cursor.getColumnIndex( "item"))!= 0);

2
RedBullet

まあ、それは非常に簡単です:

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;
}
0
silexcorp