2016-03-05 3 views
2

Im, используя следующий код для добавления значений в db.Почему возвращаемые значения из sqlite возвращают пустой массив

public void addComplianceAcceptability(ComplianceAcceptability complianceAcceptability) { 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 

    contentValues.put(KEY_ID, complianceAcceptability.getId()); 
    contentValues.put(KEY_COUNTRY_ID, complianceAcceptability.getCountryId()); 
    contentValues.put(KEY_DOMAIN_ID, complianceAcceptability.getDomainId()); 
    contentValues.put(KEY_UNIT_ID, complianceAcceptability.getUnitId()); 
    contentValues.put(KEY_COMPLIANCE_ID, complianceAcceptability.getComplianceId()); 
    contentValues.put(KEY_COMPLIANCE_NAME, complianceAcceptability.getCompliancenName()); 
    contentValues.put(KEY_COMPLIANCE_FREQUENCY, complianceAcceptability.getComplianceFrequency()); 
    contentValues.put(KEY_COMPLIANCE_APPLICABLE, complianceAcceptability.getComplianceApplicable()); 
    contentValues.put(KEY_COMPLIANCE_OPTED, complianceAcceptability.getComplianceOpted()); 

    sqLiteDatabase.insert(TABLE_COMPLIANCE_ACCEPTABILITY, null, contentValues); 
    sqLiteDatabase.close(); 
} 

Иммы пытаются получить доступ к значениям, используя следующий код,

public List<ComplianceAcceptability> getAllAcceptability() { 

     List<ComplianceAcceptability> complianceAcceptabilityList = new ArrayList<>(); 

     String selectQuery = "SELECT * FROM " + TABLE_COMPLIANCE_ACCEPTABILITY; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     if (cursor.moveToFirst()) { 
      do { 
       ComplianceAcceptability complianceAcceptability = new ComplianceAcceptability(); 

       complianceAcceptability.setId(Integer.parseInt(cursor.getString(0))); 
       complianceAcceptability.setCountryId(cursor.getString(1)); 
       complianceAcceptability.setDomainId(cursor.getString(2)); 
       complianceAcceptability.setUnitId(cursor.getString(3)); 
       complianceAcceptability.setComplianceId(cursor.getString(4)); 
       complianceAcceptability.setCompliancenName(cursor.getString(5)); 
       complianceAcceptability.setComplianceFrequency(cursor.getString(6)); 
       complianceAcceptability.setComplianceApplicable(cursor.getString(7)); 
       complianceAcceptability.setComplianceOpted(cursor.getString(8)); 

      } while (cursor.moveToNext()); 
     } 

     return complianceAcceptabilityList; 
    } 

Проблема заключается в том, что он возвращает пустой массив. Но когда я пытаюсь распечатать contentValues ​​внутри addComplianceStatus, он, конечно, печатает массив всех значений.

+1

Вы забыли добавить его в список: D –

+0

Хахаха да! спасибо –

ответ

2

Вы никогда ничего не добавили к complianceAcceptabilityList. Вы просто назначаете его один раз, а затем ничего не делаете перед его возвратом. Может быть, вы хотите добавить в него complianceAcceptability на каждой итерации курсором?

+0

Я добавил его в список к настоящему времени, и теперь он печатает адрес памяти, а не значения –

+2

Вам необходимо реализовать метод toString на вашем объекте, если вы хотите, чтобы он печатал что-то другое, кроме того, что вы видите Теперь. –

+0

он работает уже сейчас. Теперь вы –

2

Здесь вы не добавляете объект complianceAcceptability к complianceAcceptabilityList, ваш измененный код:

if (cursor.moveToFirst()) { 
     do { 
      ComplianceAcceptability complianceAcceptability = new ComplianceAcceptability(); 

      complianceAcceptability.setId(Integer.parseInt(cursor.getString(0))); 
      complianceAcceptability.setCountryId(cursor.getString(1)); 
      complianceAcceptability.setDomainId(cursor.getString(2)); 
      complianceAcceptability.setUnitId(cursor.getString(3)); 
      complianceAcceptability.setComplianceId(cursor.getString(4)); 
      complianceAcceptability.setCompliancenName(cursor.getString(5)); 
      complianceAcceptability.setComplianceFrequency(cursor.getString(6)); 
      complianceAcceptability.setComplianceApplicable(cursor.getString(7)); 
      complianceAcceptability.setComplianceOpted(cursor.getString(8)); 
     complianceAcceptabilityList.add(complianceAcceptability);   

     } while (cursor.moveToNext()); 
    } 
+0

теперь печатает некоторый адрес памяти, а не значения –

Смежные вопросы