ฉันจะรับค่าของฟิลด์บูลีนในฐานข้อมูลSQLiteบน Android ได้อย่างไร?
ฉันมักจะใช้getString()
, getInt()
ฯลฯ เพื่อรับค่าของเขตข้อมูลของฉัน แต่ดูเหมือนจะไม่มีgetBoolean()
วิธีการ
ฉันจะรับค่าของฟิลด์บูลีนในฐานข้อมูลSQLiteบน Android ได้อย่างไร?
ฉันมักจะใช้getString()
, getInt()
ฯลฯ เพื่อรับค่าของเขตข้อมูลของฉัน แต่ดูเหมือนจะไม่มีgetBoolean()
วิธีการ
คำตอบ:
มันคือ:
boolean value = cursor.getInt(boolean_column_index) > 0;
>0
สั้นกว่าเป็นไบต์: P
ไม่มีประเภทข้อมูลบูลใน SQLite ใช้ int ที่คุณแก้ไขเป็น 0 หรือ 1 เพื่อให้ได้ผลดังกล่าว ดูอ้างอิงประเภทข้อมูลในSQLite 3.0
boolean value = (cursor.getInt(boolean_column_index) == 1);
คำตอบส่วนใหญ่ที่นี่อาจส่งผลให้ NumberFormatExceptions หรือ "ตัวดำเนินการไม่ได้กำหนดไว้สำหรับประเภท null, int" ถ้าคอลัมน์ที่คุณเก็บไว้ในได้รับอนุญาตให้ถือเป็นโมฆะ วิธีที่ดีในการทำเช่นนี้คือการใช้
Boolean.parseBoolean(cursor.getString(booleanColumnIndex));`
แม้ว่าตอนนี้คุณจะถูก จำกัด ให้เก็บสตริง "true" และ "false" มากกว่า 0 หรือ 1
การใช้งานที่พบในOrmlite Cursorยังตรวจสอบ Null ซึ่งไม่มีคำตอบอื่นใดให้ทำ
public boolean getBoolean(int columnIndex) {
if (cursor.isNull(columnIndex) || cursor.getShort(columnIndex) == 0) {
return false;
} else {
return true;
}
}
คุณยังสามารถใช้
boolean value =cursor.getString(boolean_column_index).equals("True");
ตัวเลือกอื่น
boolean value = (cursor.getString(column_index)).equals("1");
boolean
Cursor
ประเภทข้อมูลไม่สามารถใช้ได้ใน
คุณจะได้รับผลในint
ดังนั้นคุณจะต้องแปลงที่คุ้มค่ากับint
boolean
คุณสามารถใช้
boolean b = cursor.getInt(boolean_column_index) > 0;
หรือ
boolean b = (cursor.getInt(boolean_column_index) != 0);
บูลีน b = (cursor.getInt (cursor.getColumnIndex ("รายการ"))! = 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;
}