一、发现问题
先看两种方法插入数据
public void save(Person p)
{
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.execSQL("insert into person(name,phone) values (?,?)", new Object[] { p.getName(), p.getPhone() });
db.close();
}
public void save(Person p)
{
SQLiteDatabase db = dbHelper.getWritableDatabase(); // 取得数据库操作实例
ContentValues values = new ContentValues();
values.put("name", p.getName());
values.put("phone", p.getPhone());
db.insert("person", "name", values);
db.close();
}
这两种方法可读性都比较好,但我们注意到db.insert("person", "name", values);操作中有一个name字段是什么意思呢?
二、解决问题
insert的一种构造方法
public long insert (String table, String nullColumnHack, ContentValues values)
table
要插入数据的表的名称
values
ContentValues对象,类似一个map通过键值对的形式存储值。
nullColumnHack
当values参数为空或者里面没有内容的时候,insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,要在这里指定一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。通过观察源码的insertWithOnConflict方法可以看到当ContentValues类型的数据initialValues为null或size<=0时,就会在sql语句中添加nullColumnHack的设置。
若不添加nullColumnHack则sql语句最终的结果将会类似insert into tableName()values();这是不允许的。
若添加上nullColumnHack则sql语句将会变成insert into tableName (nullColumnHack)values(null);这是可以的。
参考地址:http://mofan.iteye.com/blog/1412262
分享到:
相关推荐
安卓Android源码——Andorid科学计算器源码.zip
安卓Android源码——Andorid录音+变声+转mp3.zip
安卓Android源码——andorid 源码北京公交线路查询(离线).rar
安卓Android源码——andorid 源码北京公交线路查询(离线).zip
memtester——andorid_linux内存测试
安卓Andriod源码——Andorid录音+变声+转mp3.zip
在安卓项目中创建WorldWind项目。项目中是已经创建好的,所以库名会有不同,但是步骤是一样的。共同学习
移动开发技术(Android)——实验1Android开发环境搭建及简单程序实现 移动开发技术(Android)——实验1 Android开发环境搭建及简单程序实现 ⼀、实验⽬的 1.熟练掌握Android开发环境搭建步骤; 2.掌握Android应...
andorid数据库开发大全: 1、android中文chm 2、sqlite中文chm 3、android开发指南pdf 4、androidAPI详解pdf 5、sqlite权威指南pdf
详细解析Android数据库内容变化的监听
Android 操作 SQLite数据库 Android 操作 SQLite数据库 Android 操作 SQLite数据库
Andorid SQLite数据库开发基础教程v2019.1.pdf
新版Android开发教程&笔记(1-12) eoeAndroid社区精华特刊共24期全部原创 《深入浅出Android--Google手持设备应用程序设计》下载 《Android编程指南》android-book.pdf 下载 《Android应用开发揭秘》PDF高清版下载...
传智播客_Andorid教程_20天从零到精通精通Android开发视频_第05天 1、SQlite数据库简介 2、SQliteOpenHelper介绍获取 3、数据库升级 4、直接执行sql操作数据库,增删改查 5、通过谷歌封装的api操作数据库,增删改查 ...
传智播客_Andorid教程_20天从零到精通Android开发视频_第11天 10_动态注册广播接收者
传智播客_Andorid_20天精通Android开发视频_第13天视频_视频_06_通过内容解析者访问短信数据库.avi
Android项目之——漂亮的平台书架.7z
传智播客_Andorid教程_20天精通Android开发视频_第11天 05_不同版本广播的特点
传智播客_Andorid教程_20天精通Android开发视频_第20天
《android技术内幕:系统卷》 前言 第1章 准备工作 /1 1.1 深入认识android /2 1.1.1 android的系统构架 /2 1.1.2 android的初始化流程 /5 1.1.3 各个层次之间的相互关系 /8 1.1.4 android系统开发(移植)和应用...