Dapatkan boolean dari database menggunakan Android dan SQLite


169

Bagaimana saya bisa mendapatkan nilai bidang boolean dalam database SQLite di Android?

Saya biasanya menggunakan getString(),, getInt()dll. Untuk mendapatkan nilai dari bidang saya, tapi sepertinya tidak ada getBoolean()metode.

Jawaban:




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

Meskipun tidak persis sesuai dengan pertanyaan ini (Alex adalah yang terdekat), ini adalah jawaban yang sangat baik, dan saya akan menggunakan ini.
Budimir Grom

10

Sebagian besar jawaban di sini dapat menghasilkan NumberFormatExceptions atau "operator tidak ditentukan untuk tipe null, int" jika kolom tempat Anda menyimpan int diizinkan juga memiliki null. Cara yang layak untuk melakukan ini adalah menggunakan

Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`

meskipun Anda sekarang terbatas untuk menyimpan string "benar" dan "salah" daripada 0 atau 1.


5
Ini tidak bekerja. Boolean.parseBoolean mengambil string "true" atau "false". Jika Anda telah menyimpan boolean Anda sebagai 0 atau 1, Anda akan selalu salah.
Gober

Jika apa yang dikatakan Gober benar, maka jawaban ini layak untuk diturunkan
Shervin Asgari

Ah, dia benar. Saya pikir kejelasan hasilnya lebih penting daripada harus menyimpan string.
Sojurn

1
@ ShervinAsgari di jawaban lain jika Anda menyimpan boolean Anda sebagai benar atau salah itu akan selalu salah. Jadi itu harus diturunkan juga dengan logika Anda.
Arda Kara

6

Implementasi yang ditemukan di Ormlite Cursor juga memeriksa Null yang tidak dilakukan oleh jawaban lain.

   public boolean getBoolean(int columnIndex) {
        if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
            return false;
        } else {
            return true;
        }
    }

6

Anda juga bisa menggunakan

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

5
sama dengan () tidak mengandung
Shervin Asgari

3

Pilihan lain

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

3

booleantipe data tidak tersedia di Cursor.

Anda akan mendapatkan hasilnya dalam int, jadi Anda harus mengubah intnilai itu menjadi a boolean.

Anda bisa menggunakan

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

atau

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

2

boolean b = (cursor.getInt (cursor.getColumnIndex ("item"))! = 0);


0

Yah, itu sangat sederhana:

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;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.