0
我試圖通過它的_id檢索一行數據,並使用我回來的數據創建接種的實例。爲什麼從Sqlite數據庫中通過_id檢索對象時會出現SuperNotCalledException異常?
public Inoculation retrieveInoculationById(int id) {
Inoculation inoculation = new Inoculation();
Cursor cursor = getDataById(InoculationsDao.TABLE_NAME, InoculationsDao.ID, id);
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
inoculation.setBatchNumber(cursor.getString(cursor.getColumnIndex(InoculationsDao.BATCH_NUMBER)));
inoculation.setAdministrationSite(cursor.getString(cursor.getColumnIndex(InoculationsDao.ADMINISTRATION_SITE)));
inoculation.setAdministrationDate(cursor.getString(cursor.getColumnIndex(InoculationsDao.DATE)));
}
}
cursor.close();
return inoculation;
}
的getDataById
方法很簡單:
public Cursor getDataById(String TABLE_NAME, String ID, int id) {
Cursor cursor = databaseConnection.rawQuery("SELECT * FROM " + TABLE_NAME + "WHERE " + ID + " = " + id , null);
return cursor;
}
似乎在rawQuery
字符串失敗。
您發佈的代碼至少有兩個問題 - SQL語法錯誤,缺少'cursor.moveToNext()'。這些都不會產生'SuperNotCalledException'。發佈你的堆棧跟蹤。 – laalto
感謝您的光臨。這個問題現在已經解決了。這是ישואוהבאותך已經指出的SQL查詢中令人討厭的空間。這是導致「SuperNotCalledException」的這個SQL錯誤。奇怪,我知道。 沒有'cursor.moveToNext()',因爲我只對一行感興趣,因爲我通過它_id來檢索一個對象。 – SarahJessica
'while'循環永遠不會終止'cursor.moveToNext()' – laalto