Android'de bir SQLite veritabanında bir boole alanının değerini nasıl edinebilirim ?
Alanlarımın değerlerini almak için genellikle , vs. kullanıyorum getString()
, getInt()
ancak bir getBoolean()
yöntem yok gibi görünüyor .
Android'de bir SQLite veritabanında bir boole alanının değerini nasıl edinebilirim ?
Alanlarımın değerlerini almak için genellikle , vs. kullanıyorum getString()
, getInt()
ancak bir getBoolean()
yöntem yok gibi görünüyor .
Yanıtlar:
Bu:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
byte ile daha kısa: P
SQLite'de bool veri türü yoktur. Bu efekti elde etmek için 0 veya 1 olarak düzelttiğiniz bir int kullanın. Bkz veri türleri referans ile SQLite'ta 3.0 .
boolean value = (cursor.getInt(boolean_column_index) == 1);
Burada sakladığınız sütunun da boş kalmasına izin verildiyse, buradaki yanıtların çoğu NumberFormatExceptions veya "operatör null, int türleri için tanımlanmamıştır" ile sonuçlanabilir. Bunu yapmanın iyi yolu,
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
ancak şimdi 0 veya 1 yerine "true" ve "false" dizelerini saklamakla sınırlısınız.
Ormlite Cursor'da bulunan bir uygulama , diğer yanıtların hiçbirinin yapmadığı Null değerini de denetler.
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
Başka seçenek
boolean value = (cursor.getString(column_index)).equals("1");
Bu çok basit:
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;
}