增加数据:
参数介绍:
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);这样很显然就是可以的。
分享到:
相关推荐
首先,我们来看`insert()`方法,这是向SQLite数据库表中插入新记录的主要方法。它的基本语法如下: ```java insert(String table, String nullColumnHack, ContentValues values); ``` 1. `String table`: 这个...
- `insert(String table, String nullColumnHack, ContentValues values)`: 向指定表插入一行数据。 - `delete(String table, String whereClause, String[] whereArgs)`: 根据条件删除表中的数据。 - `update...
- `insert(String table, String nullColumnHack, ContentValues values)`:插入一条记录。 - `update(String table, ContentValues values, String whereClause, String[] whereArgs)`:更新记录。 - `delete...
- 插入数据:`insert(String table, String nullColumnHack, ContentValues values);` - 删除数据:`delete(String table, String whereClause, String[] whereArgs);` 6. 使用Cursor对象处理查询结果: - ...
- 插入数据:使用`db.insert(String table, String nullColumnHack, ContentValues values)`方法,其中table是表名,nullColumnHack通常为空,values是包含键值对的数据。 - 查询数据:使用`db.query(String table...
- 插入数据:使用`insert()`方法,如`SQLiteDatabase.insert("table_name", nullColumnHack, values);` - 查询数据:通过`rawQuery()`或`query()`执行SQL查询,返回`Cursor`对象,遍历结果集。 - 更新数据:`...
- **插入数据**:使用`db.insert()`方法,传入表名、空值占位符(nullColumnHack)和一个ContentValues对象,其中ContentValues对象存储了要插入的键值对。 - **查询数据**:使用`db.query()`方法,可以指定表名、...
- 调用SQLiteDatabase的insert()方法,传入表名、nullColumnHack(可为空)和ContentValues对象,后者包含了要插入的数据键值对。 4. **查询数据(查)** - 使用SQLiteDatabase的query()方法进行查询,可以指定...
- `insert(String table, String nullColumnHack, ContentValues values)`用于插入数据。 - `query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, ...
- **long insert(String table, String nullColumnHack, ContentValues values)**:插入新记录。 - **int delete(String table, String whereClause, String[] whereArgs)**:删除记录。 - **int update(String ...
- 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 ...