Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.IllegalStateException:从第0行第25列获取字段插槽失败_Android_Database_Sqlite_Greendao - Fatal编程技术网

Android java.lang.IllegalStateException:从第0行第25列获取字段插槽失败

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

我正在尝试使用GreenDAO创建一个android应用程序,这是一个ERP类型的项目,因此实际上不可能在这里发布所有代码,但我将只共享相关代码

    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相同)
  • 使用SqliteManager查看数据库,以验证表是否具有所需的列


    如果您无法获取数据库文件,您只需删除包含所有数据的应用程序或增加架构版本,然后使用
    DevPenHelper
    重新创建整个数据库。

    显示光标的查询。谢谢您的回答。我更新了我的问题。请查看并帮助我。@CL…。知道上述代码有什么问题吗。。。??我对GreenDAO的内部结构一无所知。但是为什么您认为游标有25列?因为这是我们的DB模式。。。。