2014-10-13 2 views
0

Я новичок в разработке Android, поэтому у меня нет большой идеи, как справиться с этой проблемой. У меня есть проблема с экстрактом частью в моих кодах, я хочу, чтобы получить все строки моей таблицы, но здесь есть некоторые проблемы с логическим типомget and set boolean type from database 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) возвратным междунар и здесь проблема. Я ищу об этой проблеме, но не могу найти ничего полезного. Может кто-нибудь мне помочь?

+0

Разработка Android для использования базы данных SQL. Проверьте это для получения дополнительной информации. https://www.sqlite.org/datatype3.html – Shvet

ответ

3

В базе данных SQLite нет булевского типа. Вместо этого вы должны сохранить 0 как false, а 1 - как истину. Таким образом, чтобы прочитать ваше значение

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

При использовании ContentValues ​​система преобразует Boolean в int для вас автоматически при сохранении.

contentValues.put(TABLE_USERMEALUNIT_BREAKFAST, booleanValue); 
+0

Doctoror Drive Я использовал модель класса 'public class UserMealUnit { \t int mealid; \t boolean breakfast;} \t public boolean isBreakfast() { \t \t возвращение завтрак; \t} \t public void setBreakfast (boolean breakfast) { \t \t this.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