SQLiteConstraintException在androidMediaProvider数据库中的分析
来源:互联网 发布:松江云安消防主机编程 编辑:程序博客网 时间:2024/06/05 22:42
我们首先来看下framework中对于SQLiteConstraintException的描述
/** * An exception that indicates that an integrity constraint was violated. */public class SQLiteConstraintException extends SQLiteException { public SQLiteConstraintException() {} public SQLiteConstraintException(String error) { super(error); }}
An exception that indicates that an integrity constraint was violated:一个异常表现为一个完整的约束条件被侵犯了。
这样的异常会在2中情况下抛出:
1:你定义的字段为 not null而插入时对应的字段却没值。
2:你定义的字段设定PRIMARY,而插入的值已经在表中存在。
最近在测试文件管理apk时遇到第二种情况,对于文件的操作,重命名,删除,复制等;
都是需要将改动update到com.android.providers.media下的external.db的file表中。
假设sdcard下存在a和b 文件,直接将b文件重命名为a文件,是不可行的,一般的做法是listfiles()方法来遍历此路径的上一级根目录的文件列表来查询是否有相同项。
当然,最保险的做法是遍历数据库,但是那样就太夸张了,需要对比的数据量太大了。
测试使用的是图片数据库,文件数据库的信息量太大了,不好作为示范:
那么这时候我们查看数据库
如果使用了adb命令删除a文件,这时候将会出现a文件以及实际上被删除,但是数据库中数据未更新。
再将b文件重命名为a.就会抛出 SQLiteConstraintException异常。
目前的解决方法只是catch(SQLiteConstraintException e),尚未有更好的解决方案。
0 0
- SQLiteConstraintException在androidMediaProvider数据库中的分析
- 使用FinalDb操作数据库出现SqliteConstraintException异常
- 索引在数据库中的应用分析
- 视图在数据库中的应用分析
- 索引在数据库中的应用分析
- 索引在ORACLE数据库中的应用分析
- 索引在数据库中的应用分析
- 索引在数据库中的应用分析
- 索引在ORACLE数据库中的应用分析
- 索引在数据库中的应用分析
- 索引在ORACLE数据库中的应用分析
- 索引在ORACLE数据库中的应用分析(原创)
- 图数据库Titan在生产环境中的使用全过程+分析
- 图数据库Titan在生产环境中的使用全过程+分析
- 数据库中插入数据错误 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
- android数据库操作出现的 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
- Android数据库GreenDAO3.2.2的使用(五,SQLiteConstraintException因为主键报错)
- 数据库中的索引优缺点分析
- 关于公倍数
- Oracle ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- 写在四月末的序
- 运算符
- Oracle字符集、编码
- SQLiteConstraintException在androidMediaProvider数据库中的分析
- Scala Learning(3): Tail Recursion定义
- lua学习笔记之浅淡table
- hdu1290 献给杭电五十周年校庆的礼物
- (7-7)hive复合数据类型
- Genymotion 模拟器启动不了
- IOS系统自带社交分享
- VBA第2课 复制,选择与删除
- 防止easyui的panel/window/dialog组件超出浏览器边境