Android ve SQLite kullanarak veritabanından boole alın


169

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:




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

Bu soruya tam olarak karşılık gelmese de (Alex'in en yakını), mükemmel bir cevap ve bunu kullanacağım.
Budimir Grom

10

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.


5
Bu çalışmıyor. Boolean.parseBoolean, "true" veya "false" dizelerini alır. Boolean'ınızı 0 veya 1 olarak sakladıysanız, her zaman yanlış olur.
Go13

Gober'in söyledikleri doğruysa, bu cevabın reddedilmesi gerekir
Shervin Asgari

Ah, haklı. Bence sonucun netliği ipleri saklamaktan daha ağır basmaktadır.
Sojurn

1
@ShervinAsgari, boolean'ınızı doğru veya yanlış olarak saklarsanız, her zaman yanlış olur. Bu yüzden mantığınızla da indirgenmelidir.
Arda Kara

6

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

6

Ayrıca kullanabilirsiniz

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

5
eşittir ()
içermiyor

3

Başka seçenek

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

3

booleaniçinde veri türü mevcut değil Cursor.

Sonucu bir elde edersiniz int, bu yüzden bu intdeğeri bir a dönüştürmeniz gerekir boolean.

Ya kullanabilirsiniz

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

veya

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

2

boolean b = (cursor.getInt (cursor.getColumnIndex ("öğe"))! = 0);


0

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;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.