最近项目架构新增了Room,在写示例demo的时候发现报错如下
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: RoomDemo.id (Sqlite code 1555 SQLITE_CONSTRAINT_PRIMARYKEY), (OS error - 88:Socket operation on non-socket)
android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed:id (Sqlite代码1555 SQLITE_CONSTRAINT_PRIMARYKEY),(操作系统错误- 88:套接字操作非套接字)
意思插入数据时存在相同重复的ID,最简单直接的方法就是在Dao方法前面加 @Insert(onConflict = OnConflictStrategy.REPLACE) 就可以了
//通过@Insert 注解的onConflict 解决冲突(如果有老的数据存在则会进行替换,如果没有就插入)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertUser(cacheBean: RoomDemoEntity)

文章讲述了在使用Room库进行项目开发时遇到的SQLiteConstraintException,主要讨论了解决数据插入时ID冲突的方法,即在Dao方法上添加@Insert注解并设置onConflict为OnConflictStrategy.REPLACE,确保旧数据被替换或新数据插入。
8094





