Android 및 SQLite를 사용하여 데이터베이스에서 부울 가져 오기


169

Android 의 SQLite 데이터베이스 에서 부울 필드 값을 얻는 방법은 무엇입니까?

나는 보통 사용 getString(), getInt()내 필드의 값을 얻기 위해, 등,하지만이있을 것 같지 않습니다 getBoolean()방법.

답변:




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

이 질문에 정확히 해당하지는 않지만 (Alex가 가장 가깝습니다) 훌륭한 답변이며 이것을 사용하겠습니다.
Budimir Grom

10

여기에있는 대부분의 답변은 NumberFormatExceptions 또는 int를 저장 한 열이 null을 보유 할 수있는 경우 "null, int 유형에 대해 연산자가 정의되지 않았습니다"가 발생할 수 있습니다. 이 작업을 수행하는 적절한 방법은

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

현재는 0 또는 1 대신 "true"및 "false"문자열을 저장하는 것으로 제한되어 있습니다.


5
작동하지 않습니다. Boolean.parseBoolean은 "true"또는 "false"문자열을 사용합니다. 부울을 0 또는 1로 저장 한 경우 항상 거짓이됩니다.
Gober

Gober의 말이 사실이라면,이 답변은 downvoted 할 가치가 있습니다
Shervin Asgari

아 맞아. 결과의 선명도가 문자열을 저장 해야하는 것보다 크다고 생각합니다.
Sojurn

1
다른 답변에서 @ShervinAsgari는 부울을 true 또는 false로 저장하면 항상 false가됩니다. 따라서 논리와 함께 다운 투표해야합니다.
Arda Kara

6

Ormlite Cursor 에서 찾은 구현 은 다른 답변 중 어느 것도 수행하지 않는 Null을 확인합니다.

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

6

당신은 또한 사용할 수 있습니다

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

5
equals () 포함하지 않음
Shervin Asgari


3

boolean에서 데이터 유형을 사용할 수 없습니다 Cursor.

에 결과가 표시 int되므로 해당 int값을 로 변환해야 합니다 boolean.

둘 중 하나를 사용할 수 있습니다

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.