2014-10-13 3 views
0

저는이 문제를 어떻게 처리 할 수 ​​있을지 잘 모르겠습니다. 난 내 테이블의 모든 행을하고 싶지만 여기 부울데이터베이스에서 부울 유형을 가져오고 설정하십시오. android sqlite

public ArrayList<UserMealUnit> getUserMealUnit() { 

    ArrayList<UserMealUnit> result = null; 
    SQLiteDatabase myDataBase = null; 
    Cursor cursor = null; 
    try { 
     myDataBase = openHelper.getWritableDatabase(); 
     cursor = myDataBase.query(TABLE_USERMEALUNIT, new String[] { "*" }, null, null, 
       null, null, null); 
     if (cursor.moveToFirst()) { 
      result = new ArrayList<UserMealUnit>(); 
      do { 
       result.add(extractUserMealUnit(cursor)); 
      } while (cursor.moveToNext()); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Exception: " + e.getMessage()); 
    } 
    finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
     myDataBase.close(); 
    } 
    return result;  
} 

//extract 

private UserMealUnit extractUserMealUnit(Cursor cursor) { 
    UserMealUnit usermealunit = new UserMealUnit(); 
    boolean value1; 
    usermealunit.setMealid(cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_ID))); 
    usermealunit.setBreakfast(cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST))); 
    return usermealunit; 
} 

아침 식사 유형은 부울입니다 유형하지만 cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST) 반환 INT 일부 문제이며 여기에 문제가 내 코드에서 추출 부분에 문제가 있습니다. 이 문제에 관해서는 검색을하지만 유용한 것은 없습니다. 아무도 나를 도울 수 있습니까?

+0

Android 개발에는 SQL 데이터베이스가 사용됩니다. 자세한 정보를 확인하십시오. https://www.sqlite.org/datatype3.html – Shvet

답변

3

SQLite 데이터베이스에는 부울 유형이 없습니다. 대신 0을 false로, 1을 true로 저장해야합니다. ContentValues를 사용하는 경우 따라서 저장할 때 시스템이 자동으로 intBoolean 변환됩니다 값

final boolean breakfast = cursor.getInt(cursor.getColumnIndex(TABLE_USERMEALUNIT_BREAKFAST) != 0; 

를 읽을 수 있습니다.

contentValues.put(TABLE_USERMEALUNIT_BREAKFAST, booleanValue); 
+0

Doctoror Drive 클래스 모델을 사용했습니다. 'public class UserMealUnit { \t int mealid; \t 부울 식 아침 식사;} \t public boolean isBreakfast (\t \t 아침 식사 반환; \t} \t 공백 void setBreakfast (부울 식 아침 식사) { \t \t this.breakfast = breakfast; \t} 또한 내 데이터베이스 아답터 에도 있습니다. ContentValues ​​values ​​= new ContentValues ​​(); \t \t \t values.put (TABLE_USERMEALUNIT_BREAKFAST, usermealunit.isBreakfast()); 도 대답 을 사용하지만 여전히 문제가 있습니다. – mkafiyan

+0

@mimi 그럼 세터에 넣으세요. 'usermealunit.setBreakfast (cursor.getInt (cursor.getColumnIndex (TABLE_USERMEALUNIT_BREAKFAST))! = 0); ' –

+0

아하 이제 얻었습니다;) – mkafiyan

관련 문제