Android java.lang.IllegalStateException:从第0行第25列获取字段插槽失败
我正在尝试使用GreenDAO创建一个android应用程序,这是一个ERP类型的项目,因此实际上不可能在这里发布所有代码,但我将只共享相关代码Android java.lang.IllegalStateException:从第0行第25列获取字段插槽失败,android,database,sqlite,greendao,Android,Database,Sqlite,Greendao,我正在尝试使用GreenDAO创建一个android应用程序,这是一个ERP类型的项目,因此实际上不可能在这里发布所有代码,但我将只共享相关代码 QueryBuilder<PartyCommunication> partyCommQueryBuilder = partyCommunicationDao.queryBuilder(); partyCommQueryBuilder = partyCommQueryBuilder.where( PartyCom
QueryBuilder<PartyCommunication> partyCommQueryBuilder = partyCommunicationDao.queryBuilder();
partyCommQueryBuilder = partyCommQueryBuilder.where(
PartyCommunicationDao.Properties.CommType.eq("ALERT"),
PartyCommunicationDao.Properties.ReferenceCategory.eq("Low Stock"));
List<PartyCommunication> listOfPartyComm = partyCommQueryBuilder.list();
PartyCommunication daoPartyCommunication = listItr.next();
Long reference_entity_key = daoPartyCommunication.getReferenceEntityKey();
Product product = daoSessionUni.getProductDao().load(reference_entity_key);
ProductDetail productDetail = new ProductDetail(product);
Integer inventoryQOH= productDetail.getInventoryQOH();
当我调试我们的应用程序时,我发现它从一个DAO类抛出异常,如下所示
public Product readEntity(Cursor cursor, int offset) {
Product entity = new Product( //
.
.
.
.
cursor.getShort(offset + 23) != 0, // isSync
cursor.getShort(offset + 24) != 0, // isDeleted
cursor.getString(offset + 25), // createdBy
cursor.getString(offset + 26), // modifiedBy
cursor.isNull(offset + 27) ? null : new java.util.Date(cursor.getLong(offset + 27)), // lastSyncTime
new java.util.Date(cursor.getLong(offset + 28)), // created
new java.util.Date(cursor.getLong(offset + 29)) // modified
);
return entity;
}
在这一行
Product product = daoSessionUni.getProductDao().load(reference_entity_key);
cursor.getString(offset + 25), // createdBy
这是我们表格的第25列,我知道所有的代码都不足以理解哪里出了问题以及为什么会出现这种异常,所以我也要发布logcat输出
java.lang.IllegalStateException: get field slot from row 0 col 25 failed
at net.sqlcipher.CursorWindow.getString_native(Native Method)
at net.sqlcipher.CursorWindow.getString(CursorWindow.java:382)
at net.sqlcipher.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at android.database.CursorWrapper.getString(CursorWrapper.java:114)
at com.tarnea.kareeb.model.ProductDao.readEntity(ProductDao.java:273)
at com.tarnea.kareeb.model.ProductDao.readEntity(ProductDao.java:1)
at de.greenrobot.dao.AbstractDao.loadCurrent(AbstractDao.java:417)
at de.greenrobot.dao.AbstractDao.loadUnique(AbstractDao.java:163)
at de.greenrobot.dao.AbstractDao.loadUniqueAndCloseCursor(AbstractDao.java:150)
at de.greenrobot.dao.AbstractDao.load(AbstractDao.java:139)
at com.tarnea.android.DataCleaningService.adjustLowStockAlertTable(DataCleaningService.java:115)
at com.tarnea.sync.kareeb.pharma.syncadapter.SyncManager.performSync(SyncManager.java:970)
at com.tarnea.sync.kareeb.pharma.syncadapter.SyncAdapter.onPerformSync(SyncAdapter.java:96)
at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:254
提前感谢大家。如果有人有兴趣解决我的问题,请随时询问更多信息。您的问题不是查询。SQLite表只包含24列 您可能通过添加新列修改了数据库模式,如
createdBy
OpenHelper
ALTER TABLE
-语句中有错误ALTER TABLE
-语句(实际上与1相同)如果您无法获取数据库文件,您只需删除包含所有数据的应用程序或增加架构版本,然后使用
DevPenHelper
重新创建整个数据库。显示光标的查询。谢谢您的回答。我更新了我的问题。请查看并帮助我。@CL…。知道上述代码有什么问题吗。。。??我对GreenDAO的内部结构一无所知。但是为什么您认为游标有25列?因为这是我们的DB模式。。。。