代码之家  ›  专栏  ›  技术社区  ›  Gotama

删除表时出现受限API lint错误。房间持久性

  •  1
  • Gotama  · 技术社区  · 7 年前

    因此,我试图删除我房间持久性表中的所有项目,这显然导致了我这样做:

    @Dao 
    interface MyDao {
        @Query("DELETE FROM myTableName")
        public void nukeTable();
    }
    

    Stack overflow suggestion

    然而,在运行/gradlew lint时,我面临一个受限的API故障,如下所示。

    Dao_Impl.java

    1、我的代码

    @Dao
    public interface AlertDao {
    
        @Insert
        void insert(List<Alert> alert);
    
        @Query("SELECT * FROM alert")
        List<Alert> queryAll();
    
        @Query("DELETE FROM alert")
        void deleteTable();
    }
    
    1. 我的lint错误

    受限API ../generated/source/apt/debug/com/app/test/storage/dao/AlertDao\u Impl。java:>84:SharedSQLiteStatement。只能从同一个内部调用acquire>库组(groupId=android.arch.persistence.room) 83公共表格(){ 84最终支持语句_stmt=>__preparedStmtOfDeleteTable.acquire();
    85 _udb.beginTransaction(); 86试试看{ 87 _stmt.executeUpdateDelete();

    88 _udb.setTransactionSuccessful(); 91 _uPreparedStmtoDeleteTable.release(_stmt);
    92 }

    95@超越 96公共列表查询(){ 98最终RoomSQLiteQuery _语句=RoomSQLiteQuery。获取(_sql,0);
    99最终游标\u游标=\u db.query(\u语句); 101 final int \u cursorindexofutogeneratedkey=\u cursor.getColumnIndexOrThrow(“自动生成键”);

    132}最后{ 133 _cursor.close();
    135 }

    任何帮助都将不胜感激。

    1 回复  |  直到 4 年前
        1
  •  1
  •   adityakamble49    7 年前

    我在这里发现了一些类似的问题 Android Architecture Component Issue Tracker .根据问题,他们可能 忽视 剥棉绒 . 阿尔法

    我用过 deleteTable()

    @Query("DELETE FROM tv_show")
    void deleteTable();
    

    D/TVShowViewModel: deleteTVShowTable: Delete
    

    最新版本 属于 架构(architecture)组件 格拉德尔 Android Architecture Components Releases

    您可以禁用 RestrictedApi

    android {
      lintOptions {
        disable 'RestrictedApi'
      }
    }