【Content Provider】 Sqlite insert步骤nullColumnHack字段的含义
来源:互联网 发布:windows 显示隐藏文件 编辑:程序博客网 时间:2024/06/05 15:22
http://hi.baidu.com/dilqut/item/9cf3bd8b682f395a840fab93
增加数据:
参数介绍:
table 要插入数据的表的名称
values:一个ContentValues对象,类似一个map.通过键值对的形式存储值。
conflictAlgon:冲突解决方案。例如当数据表主键的唯一性检测出错的时候,就会按照该值设定的值进行处理。
nullColumnHack:当values参数为空或者里面没有内容的时候,我们insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。
(这里很多人会迷惑,nullColumnHack到底干什么用的,为什么会出现呢。当我们不设定一列的时候,不都是数据库给设为默认值吗?很多字段设置默认值也是null,这里显示的设置也是null,有什么区别吗,怎么会显示设置了之后就允许插入了呢?笔者为了找到原因,我去查看了源代码)
其实在底层,各种insert方法最后都回去调用insertWithOnConflict方法,这里我们粘贴出该方法的部分实现
这里我们可以看到,当我们的ContentValues类型的数据initialValues为null,或者size<=0时,就会再sql语句中添加nullColumnHack的设置。我们可以想象一下,如果我们不添加nullColumnHack的话,那么我们的sql语句最终的结果将会类似insert into tableName()values();这显然是不允许的。而如果我们添加上nullColumnHack呢,sql将会变成这样,insert into tableName (nullColumnHack)values(null);这样很显然就是可以的。 0 0
- 【Content Provider】 Sqlite insert步骤nullColumnHack字段的含义
- Sqlite insert步骤nullColumnHack字段的含义
- Sqlite insert方法nullColumnHack字段的含义
- content provider 的使用
- Android的Content Provider
- Content Provider的加载
- Content Provider的权限
- content provider的使用!
- 简单的content provider
- Content Provider的加载
- Android学习笔记-SQLite和Content Provider
- Content Provider与SQLite结合使用
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android数据的三种存储方式:SharedPreferences、SQLite、Content Provider
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File
- 解决window.location.href切换页面造成的Request.UrlReferrer=null的问题
- java 骨架类
- J2EE的WEB.XML详解
- linux:shell脚本格式
- NSTimeZone获取当前时间问题
- 【Content Provider】 Sqlite insert步骤nullColumnHack字段的含义
- log4j.xml配置
- hdu 1006 Tick and Tick 时钟问题
- zoj 3535 Gao the String II(ac自动机+dp)
- POJ 1056 IMMEDIATEDECODABILITY(字典树Trie)
- Python采集豆瓣网电影资源--疑问
- 项目一 体会深复制
- 兴趣颇多也是种烦恼哇
- Linux Ubuntu 字体安装方法