参数介绍:
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);这样很显然就是可以的。
来源:安卓ROM之家
分享到:
相关推荐
1. 创建数据库:在Android中,通常在SQLiteOpenHelper的子类中重写onCreate()方法,这里会执行创建数据库表的SQL语句。 2. 打开/关闭数据库:通过SQLiteDatabase的openDatabase()或getWritableDatabase()、...
SqlDataBase sqlserver 类
例如,"学生"表可能包含学生ID、姓名、性别、出生日期等字段;"课程"表则有课程ID、课程名称、授课教师等信息;而"成绩"表将连接学生和课程表,记录每个学生的分数。通过SQL语句,我们可以轻松地查询特定学生的所有...
JavaScript应用实例-SqlDatabase2.js
在本项目中,"Student-Task" 是一个专为学生设计的 Android 应用程序,其核心功能是利用 SQL 数据库来存储和管理与学生学习相关的数据。这个应用的开发采用了 Java 语言,这是 Android 开发中最常用的语言之一,因此...
AutoJs源码-SqlDatabase2。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!...
例如,类中可能会有`Connect()`方法用于建立数据库连接,`ExecuteNonQuery()`用于执行不返回结果集的SQL命令(如INSERT、UPDATE、DELETE),`ExecuteReader()`用于执行返回结果集的查询,以及`CloseConnection()`...
在“Azure Elastic Scale SqlDatabase”演示中,我们可能看到以下几个关键知识点: 1. **分片策略**:分片是Elastic Scale的核心概念,它可以按照预定规则(如范围、哈希或值列表)将数据分布到不同的分片上。这有...
可以使用DAAB的SqlDatabase类的ExecuteReader方法来执行查询并获取结果集。这允许你轻松地读取、遍历和处理返回的数据。 【EntLibTest】这个文件可能是项目示例的源代码或测试项目。在这个例子中,开发者可能创建了...
- **File**:从指定的文本文件中读取数据,该文件需遵循特定格式,其中第一行为字段名和数据类型组合,字段间用逗号分隔,字段名与数据类型之间用冒号分隔;数据类型包括字符串(s)、整数(I)、实数(R)和日期时间(D)...
在本文中,我们探讨了如何使用LabVIEW SQL Toolkit进行数据库访问,特别是在自动化测试系统中整合虚拟仪器和数据库的策略。LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是一种图形化编程...
这些方法提供了对数据库操作的通用接口,使得具体的数据访问类(如SqlDatabase)可以通过实现这个接口来遵循一定的规范,提高代码的可读性和可维护性。同时,这种设计也支持了依赖注入和易于测试,因为你可以通过...
数据库工具是IT领域中至关重要的组成部分,特别是在管理和操作大量数据时。本专题主要关注的是针对SQL Server 2000的实用工具,帮助用户解决SQL密码遗忘和重置的问题。以下将详细介绍这些工具及其功能。 首先,...
在`SqlDataBase.cs`文件中,我们可以预期它包含了一系列用于与SQL数据库交互的类和方法。SQL(结构化查询语言)是用于管理和处理关系型数据库的标准编程语言。这些函数可能包括连接到数据库、执行查询、插入、更新和...
在C#中,SQL语句的执行有两种主要方式:使用SqlCommand对象的ExecuteNonQuery()方法执行非查询操作,如INSERT、UPDATE或DELETE;使用ExecuteReader()方法执行查询操作,返回一个SqlDataReader对象,可以迭代获取结果...
标题 "SMO+PowerShell 实现SQLServer数据库的备份与还原" 涉及到的是在SQL Server环境中,使用SQL Server Management Objects (SMO) 和 PowerShell脚本来自动化数据库的备份和恢复过程。这是一种高效且灵活的方法,...
Cognex Designer让您更快地构建完整的视觉应用,并使开发人员能够更方便地利用功能较强的 VisionPro 工具库的全部优势。模块图的图形化编程环境可缩短开发周期,并方便应用程序维护和支持。 ...
本篇文章将深入探讨SQLDMO类的使用,包括处理数组、类初始化、获取SQL服务器列表、获取数据库列表以及获取数据库中的所有表。 1. **处理数组**:在SQLDMO中,处理数组通常涉及到列举或操作与SQL Server对象相关的...
7.6.1 数据库中表名和字段名的规范 26 7.6.2 系统中文件目录命名规范 26 7.6.3 程序书写,缩进,注释规范 26 第八章 总 结 28 8.1 系统的总结 28 8.2 开发过程的总结 28 参考文献 29 致 谢 30 附 录 31
在C#中,这可以通过SqlConnection对象的Open方法、SqlDatabase对象的Attach方法和 Detach方法实现。附加操作会将数据库文件加入到实例中,使其可以被查询和操作。 相反,“数据库分离”则是断开数据库与SQL Server...