Andorid之SQLite插入以及nullColumnHack
2017-03-04 17:24
330 查看
一、两种方法插入数据
(1)第一种
SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("insert into person(name,phone) values (?,?)", new Object[] { p.getName(), p.getPhone() }); db.close();
(2)第二种
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
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);这是可以的。
相关文章推荐
- Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Android开发12——Andorid中操作数据库的insert的两种方法以及nullColumnHack
- Android开发12――Andorid中操作数据库的insert的两种方法以及nullColumnHack
- SqliteDatabase insert(String table, String nullColumnHack, ContentValues values)
- android小问题--------------------SQLiteDatabase.insert(table, nullColumnHack, values)参数
- SqliteDatabase insert(String table, String nullColumnHack, ContentValues values)
- SqliteDatabase insert(String table, String nullColumnHack, ContentValues values)
- sqlite避免重复插入数据以及插入同时又可更新已有的数据
- SqliteDatabase insert(String table, String nullColumnHack, ContentValues values)
- sqlite 数据库的创建以及单元测试插入、删除、更改数据库信息
- 嵌入式 sqlite3数据库创建、插入、更新、查询、删除、多线程等C编程示例以及多并发完成
- android中常用的查询、插入、更新、删除等SQL语句以及SQLite数据类型
- sqlite插入记录值为纯数字的字符串的问题以及sqlite语句中字符串的拼接
- html5创建的sqlite存放为止以及在手机中的位置
- iOS学习之sqlite的创建数据库,表,插入查看数据
- 创建SQL作业错误的解决方法(不能将值 NULL 插入列 'owner_sid',表 'msdb.dbo.sysjobs';列不允许有空值。)