Androidの SQLite データベースのブールフィールドの値を取得するにはどうすればよいですか?
私は通常getString()
、getInt()
などを使用してフィールドの値を取得しますが、getBoolean()
メソッドはないようです。
それは:
boolean value = cursor.getInt(boolean_column_index) > 0;
SQLiteにはboolデータ型はありません。 0または1に固定したintを使用して、その効果を実現します。 SQLite 3. の datatypes reference を参照してください。
boolean value = (cursor.getInt(boolean_column_index) == 1);
ここでの回答のほとんどは、NumberFormatExceptions、またはintを格納した列がnullを保持することを許可されている場合、「演算子はnull、int型に対して未定義」になります。これを行う適切な方法は、使用することです
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
ただし、0または1ではなく、文字列「true」と「false」の保存に制限されています。
使用することもできます
boolean value =cursor.getString(boolean_column_index).equals("True");
Ormlite Cursor にある実装は、他の回答ではないNullもチェックします。
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
boolean
データ型はCursor
では使用できません。
結果はint
で取得されるため、そのint
値をboolean
に変換する必要があります。
どちらかを使用できます
boolean b = cursor.getInt(boolean_column_index) > 0;
または
boolean b = (cursor.getInt(boolean_column_index) != 0);
別のオプション
boolean value = (cursor.getString(column_index)).equals("1");
ブールb =(cursor.getInt(cursor.getColumnIndex( "item"))!= 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;
}