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.