`
flycomos.lee
  • 浏览: 281954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sqlite insert方法nullColumnHack字段的含义

 
阅读更多

增加数据:

 

 

 参数介绍:

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);这样很显然就是可以的。

分享到:
评论

相关推荐

    Android基础编程-sqlite数据库添加数据.pptx

    首先,我们来看`insert()`方法,这是向SQLite数据库表中插入新记录的主要方法。它的基本语法如下: ```java insert(String table, String nullColumnHack, ContentValues values); ``` 1. `String table`: 这个...

    android的连接数据库SQLite3.doc

    - `insert(String table, String nullColumnHack, ContentValues values)`: 向指定表插入一行数据。 - `delete(String table, String whereClause, String[] whereArgs)`: 根据条件删除表中的数据。 - `update...

    Android应用开发-SQLite数据库存储.pptx

    - `insert(String table, String nullColumnHack, ContentValues values)`:插入一条记录。 - `update(String table, ContentValues values, String whereClause, String[] whereArgs)`:更新记录。 - `delete...

    Android中SQLite应用详解

    - 插入数据:`insert(String table, String nullColumnHack, ContentValues values);` - 删除数据:`delete(String table, String whereClause, String[] whereArgs);` 6. 使用Cursor对象处理查询结果: - ...

    android_sqlite3实例.docx

    - 插入数据:使用`db.insert(String table, String nullColumnHack, ContentValues values)`方法,其中table是表名,nullColumnHack通常为空,values是包含键值对的数据。 - 查询数据:使用`db.query(String table...

    SQLiteOperate

    - 插入数据:使用`insert()`方法,如`SQLiteDatabase.insert("table_name", nullColumnHack, values);` - 查询数据:通过`rawQuery()`或`query()`执行SQL查询,返回`Cursor`对象,遍历结果集。 - 更新数据:`...

    Android 日记系统源码(数据库的基本操作).zip源码资源下载

    - **插入数据**:使用`db.insert()`方法,传入表名、空值占位符(nullColumnHack)和一个ContentValues对象,其中ContentValues对象存储了要插入的键值对。 - **查询数据**:使用`db.query()`方法,可以指定表名、...

    android 增删查完整例子

    - 调用SQLiteDatabase的insert()方法,传入表名、nullColumnHack(可为空)和ContentValues对象,后者包含了要插入的数据键值对。 4. **查询数据(查)** - 使用SQLiteDatabase的query()方法进行查询,可以指定...

    Android_SQLite.rar_android开发_Java_

    - `insert(String table, String nullColumnHack, ContentValues values)`用于插入数据。 - `query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, ...

    android数据库开发

    - **long insert(String table, String nullColumnHack, ContentValues values)**:插入新记录。 - **int delete(String table, String whereClause, String[] whereArgs)**:删除记录。 - **int update(String ...

    android连接数据库[参考].pdf

    - insert(String table, String nullColumnHack, ContentValues values):插入一条记录。 - delete(String table, String whereClause, String[] whereArgs):删除记录。 - update(String table, ContentValues ...

    插入数据库的格式

    首先,我们需要了解`db.insert()`函数,这是Android中SQLite数据库操作的重要方法,用于向指定的表中插入新的记录。其基本语法如下: ```java long insert(String table, String nullColumnHack, ContentValues ...

Global site tag (gtag.js) - Google Analytics