`
56858752
  • 浏览: 61233 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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

 

来源:安卓ROM之家

分享到:
评论

相关推荐

    Android数据库SQLDatabase

    1. 创建数据库:在Android中,通常在SQLiteOpenHelper的子类中重写onCreate()方法,这里会执行创建数据库表的SQL语句。 2. 打开/关闭数据库:通过SQLiteDatabase的openDatabase()或getWritableDatabase()、...

    SqlDataBase

    SqlDataBase sqlserver 类

    SQLdatabase

    例如,"学生"表可能包含学生ID、姓名、性别、出生日期等字段;"课程"表则有课程ID、课程名称、授课教师等信息;而"成绩"表将连接学生和课程表,记录每个学生的分数。通过SQL语句,我们可以轻松地查询特定学生的所有...

    JavaScript应用实例-SqlDatabase2.js

    JavaScript应用实例-SqlDatabase2.js

    Student-Task:这是一个包含 SQLDataBase 的 Android 应用程序项目。 这个为学生开发的应用程序

    在本项目中,"Student-Task" 是一个专为学生设计的 Android 应用程序,其核心功能是利用 SQL 数据库来存储和管理与学生学习相关的数据。这个应用的开发采用了 Java 语言,这是 Android 开发中最常用的语言之一,因此...

    AutoJs源码-SqlDatabase2

    AutoJs源码-SqlDatabase2。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!...

    数据库封装类,自己用的

    例如,类中可能会有`Connect()`方法用于建立数据库连接,`ExecuteNonQuery()`用于执行不返回结果集的SQL命令(如INSERT、UPDATE、DELETE),`ExecuteReader()`用于执行返回结果集的查询,以及`CloseConnection()`...

    Azure elasticscale SqlDatabase

    在“Azure Elastic Scale SqlDatabase”演示中,我们可能看到以下几个关键知识点: 1. **分片策略**:分片是Elastic Scale的核心概念,它可以按照预定规则(如范围、哈希或值列表)将数据分布到不同的分片上。这有...

    微软企业库增删改查例子

    可以使用DAAB的SqlDatabase类的ExecuteReader方法来执行查询并获取结果集。这允许你轻松地读取、遍历和处理返回的数据。 【EntLibTest】这个文件可能是项目示例的源代码或测试项目。在这个例子中,开发者可能创建了...

    DataFactory使用方法总结

    - **File**:从指定的文本文件中读取数据,该文件需遵循特定格式,其中第一行为字段名和数据类型组合,字段间用逗号分隔,字段名与数据类型之间用冒号分隔;数据类型包括字符串(s)、整数(I)、实数(R)和日期时间(D)...

    SQLdatabase[文].pdf

    在本文中,我们探讨了如何使用LabVIEW SQL Toolkit进行数据库访问,特别是在自动化测试系统中整合虚拟仪器和数据库的策略。LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是一种图形化编程...

    DAL.rar_DAL

    这些方法提供了对数据库操作的通用接口,使得具体的数据访问类(如SqlDatabase)可以通过实现这个接口来遵循一定的规范,提高代码的可读性和可维护性。同时,这种设计也支持了依赖注入和易于测试,因为你可以通过...

    数据库工具

    数据库工具是IT领域中至关重要的组成部分,特别是在管理和操作大量数据时。本专题主要关注的是针对SQL Server 2000的实用工具,帮助用户解决SQL密码遗忘和重置的问题。以下将详细介绍这些工具及其功能。 首先,...

    读写数据库和xml类库

    在`SqlDataBase.cs`文件中,我们可以预期它包含了一系列用于与SQL数据库交互的类和方法。SQL(结构化查询语言)是用于管理和处理关系型数据库的标准编程语言。这些函数可能包括连接到数据库、执行查询、插入、更新和...

    自用 c# 操作 xml 和 sqlserver 的类库

    在C#中,SQL语句的执行有两种主要方式:使用SqlCommand对象的ExecuteNonQuery()方法执行非查询操作,如INSERT、UPDATE或DELETE;使用ExecuteReader()方法执行查询操作,返回一个SqlDataReader对象,可以迭代获取结果...

    SMO+PowerShell 实现SQLServer数据库的备份与还原

    标题 "SMO+PowerShell 实现SQLServer数据库的备份与还原" 涉及到的是在SQL Server环境中,使用SQL Server Management Objects (SMO) 和 PowerShell脚本来自动化数据库的备份和恢复过程。这是一种高效且灵活的方法,...

    06_1_CD_SQLDatabase_CN.pptx

    Cognex Designer让您更快地构建完整的视觉应用,并使开发人员能够更方便地利用功能较强的 VisionPro 工具库的全部优势。模块图的图形化编程环境可缩短开发周期,并方便应用程序维护和支持。 ...

    SQLDMO类新人学易

    本篇文章将深入探讨SQLDMO类的使用,包括处理数组、类初始化、获取SQL服务器列表、获取数据库列表以及获取数据库中的所有表。 1. **处理数组**:在SQLDMO中,处理数组通常涉及到列举或操作与SQL Server对象相关的...

    Asp.net物资流通管理系统源码

    7.6.1 数据库中表名和字段名的规范 26 7.6.2 系统中文件目录命名规范 26 7.6.3 程序书写,缩进,注释规范 26 第八章 总 结 28 8.1 系统的总结 28 8.2 开发过程的总结 28 参考文献 29 致 谢 30 附 录 31

    C# 备份,还原sqlserver,SQL server还原,附加,分离一键操作 数据备份 数据还原

    在C#中,这可以通过SqlConnection对象的Open方法、SqlDatabase对象的Attach方法和 Detach方法实现。附加操作会将数据库文件加入到实例中,使其可以被查询和操作。 相反,“数据库分离”则是断开数据库与SQL Server...

Global site tag (gtag.js) - Google Analytics