AndroidのSQLiteデータベースでブールフィールドの値を取得するにはどうすればよいですか?
私は通常、フィールドの値を取得するためgetString()
にgetInt()
、などを使用しますが、getBoolean()
メソッドがないようです。
AndroidのSQLiteデータベースでブールフィールドの値を取得するにはどうすればよいですか?
私は通常、フィールドの値を取得するためgetString()
にgetInt()
、などを使用しますが、getBoolean()
メソッドがないようです。
回答:
それは:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
はバイトが短いですが:P
SQLiteにはブールデータ型はありません。その効果を達成するには、0または1に固定したintを使用します。SQLite 3.0のデータ型リファレンスを参照してください。
boolean value = (cursor.getInt(boolean_column_index) == 1);
ここでの回答のほとんどは、NumberFormatExceptionsまたは「演算子がnull型に定義されていません」という結果になる可能性があります。これを行う適切な方法は、使用することです
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
ただし、0または1ではなく、「true」と「false」の文字列の保存に制限されています。
Ormlite Cursorで見つかった実装は、Nullについてもチェックしますが、他の回答ではこれを行いません。
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
まあ、それはとても簡単です:
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;
}