รับบูลีนจากฐานข้อมูลโดยใช้ Android และ SQLite


169

ฉันจะรับค่าของฟิลด์บูลีนในฐานข้อมูลSQLiteบน Android ได้อย่างไร?

ฉันมักจะใช้getString(), getInt()ฯลฯ เพื่อรับค่าของเขตข้อมูลของฉัน แต่ดูเหมือนจะไม่มีgetBoolean()วิธีการ

คำตอบ:




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

แม้ว่าจะไม่ตรงกับคำถามนี้ (อเล็กซ์ใกล้เคียงที่สุด) มันเป็นคำตอบที่ยอดเยี่ยมและฉันจะใช้มัน
Budimir Grom

10

คำตอบส่วนใหญ่ที่นี่อาจส่งผลให้ NumberFormatExceptions หรือ "ตัวดำเนินการไม่ได้กำหนดไว้สำหรับประเภท null, int" ถ้าคอลัมน์ที่คุณเก็บไว้ในได้รับอนุญาตให้ถือเป็นโมฆะ วิธีที่ดีในการทำเช่นนี้คือการใช้

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

แม้ว่าตอนนี้คุณจะถูก จำกัด ให้เก็บสตริง "true" และ "false" มากกว่า 0 หรือ 1


5
สิ่งนี้ใช้ไม่ได้ Boolean.parseBoolean รับสตริง "true" หรือ "false" หากคุณเก็บบูลีนเป็น 0 หรือ 1 คุณจะได้รับเท็จเสมอ
Gober

หากสิ่งที่ Gober พูดว่าเป็นความจริงคำตอบนี้สมควรจะถูกลดระดับลง
Shervin Asgari

อ่าเขาพูดถูก ฉันคิดว่าความชัดเจนของผลลัพธ์นั้นเทียบได้กับการจัดเก็บสายอักขระ
Sojurn

1
@ShervinAsgari ในคำตอบอื่น ๆ หากคุณเก็บบูลีนของคุณเป็นจริงหรือเท็จมันจะได้รับเท็จเสมอ ดังนั้นมันควรจะถูกลดลงด้วยตรรกะของคุณ
Arda Kara

6

การใช้งานที่พบในOrmlite Cursorยังตรวจสอบ Null ซึ่งไม่มีคำตอบอื่นใดให้ทำ

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



3

booleanCursorประเภทข้อมูลไม่สามารถใช้ได้ใน

คุณจะได้รับผลในintดังนั้นคุณจะต้องแปลงที่คุ้มค่ากับintboolean

คุณสามารถใช้

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

หรือ

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


0

นั่นง่ายมาก:

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;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.