支持 Android DAO 中 NOT IN 最大变量限制的解决方法

问题描述

我有一个应用程序的 DAO 数据库。要删除数据库中的某些数据,我需要对某些查询使用 WHERE NOT IN 子句。

DAO接口代码如下:

@Query("DELETE FROM layer WHERE userId = :userId AND lid NOT IN (:layerIDs)")
fun deleteRedundant(userId: String,layerIds: List<String>)

但我得到如下错误

E/AndroidRuntime: FATAL EXCEPTION: Defaultdispatcher-worker-2
    Process: com.bytepace.dimusco.old,PID: 3870
E/AndroidRuntime: android.database.sqlite.sqliteException: too many sql variables (code 1 sqlITE_ERROR[1]):,while compiling: DELETE FROM layer WHERE userId = ? AND lid NOT IN (?,?,?)E/AndroidRuntime:     at android.database.sqlite.sqliteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.sqliteConnection.acquirePreparedStatement(sqliteConnection.java:1372)
        at android.database.sqlite.sqliteConnection.prepare(sqliteConnection.java:811)
        at android.database.sqlite.sqliteSession.prepare(sqliteSession.java:590)
        at android.database.sqlite.sqliteProgram.<init>(sqliteProgram.java:62)
        at android.database.sqlite.sqliteStatement.<init>(sqliteStatement.java:33)
        at android.database.sqlite.sqliteDatabase.compileStatement(sqliteDatabase.java:1637)
        at androidx.sqlite.db.framework.FrameworksqliteDatabase.compileStatement(FrameworksqliteDatabase.java:64)
        at androidx.room.RoomDatabase.compileStatement(RoomDatabase.java:341)
...

我想知道如何解决这个错误

那个解决方案是否正确有效??

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...