学会如何处理数据库中的null

数据|数据库

Java数据库连接(JDBC)结果集类掩盖了一个微小的bug,如果你忘记了使用wasNull方法的话。关系数据库中的NULL值的概念和Java中null的值的概念相似,前者任何类型都可以为null,但是在Java中,基本数据类型不能为null。当要读取一个数据库域赋值给一个基本类型的时候(例如resultSet.getInt(1)),可能会造成问题。这样的例子已经让JDBC规范的制订者开始研究如何解决。

当一个值通过如getInt、getLong、getFloat这样的getXxx方法从数据库中得到后,开发者可以调用wasNull()方法来找出其值是否为null。如果wasNull返回true,那么可以让开发者为基本类型选择使用合适的null值。GetXxx方法获得的值与JDBC的驱动紧密相关。

例如,在某个数据库驱动中,它返回0,另一个也许返回那一列的缺省值,也许还有一个返回驱动在那一列读取的最后一个值。

所以当你准备读取数据库中的NULL值的时候,要小心缺省值,你也许需要以下面的习惯编码:

int idx = resultSet.getInt(1);
if(resultSet.wasNull( ))
{
idx = -1; // this is our default value for idx
}

时间: 2024-10-28 21:03:49

学会如何处理数据库中的null的相关文章

如何正确处理数据库中的Null

数据|数据库 对于初学者, 在处理数据库中的 Null 资料型态是有一点麻烦的事, 在这篇文章文章中我们将谈谈 Null , 你将会了解到如何知道一个值是 Null , 哪些函数可以或不可以处理 Null 首先, 我们必须知道在 VBScript 中, Variant 是唯一的一种资料型态, 对于那些已经熟悉其它语言的程序开发者, 可能会感到有点不习惯. 使用 Variant 的好处在于其相当有弹性, 因为 Variant 可以储存任何数据类型, 例如, 整数, 字符串, 日期时间, 甚至包括对

mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在

问题描述 mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在 mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在 解决方案 select (case when name is null then '不存在' else name end) as name,id from user 这种sql不建议使用,虽然能让你暂时实现逻辑, 但是会大大影响MySQL的性能.所以不建议使用, 最好是在自己的代码里处理这些东西.(其他的数据库除外) 解决方案二: 这个不是sq

sqlite3-在 SQlite 数据库中存储 Null

问题描述 在 SQlite 数据库中存储 Null 我想实现下面的代码: String updateQuery ="INSERT INTO MAAccounts(userId, accountId, accountType, accountName, parentAccountId ) VALUES(?, ?, ?, ?, ?)"; Cursor c = mDb.rawQuery(updateQuery, new String[]{ stringToDB(account.userId)

Oracle数据库中对null值的排序及mull与空字符串的区别_oracle

order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前.所以,为何分析数据的直观性方便性,我们需要对null的记录值进行相应处理. 这是四种oracle排序中NULL值处理的方法:1.使用nvl函数语法:Nvl(expr1, expr2)     若EXPR1是NULL,則返回

MySQL数据库中与 NULL值有关的几个问题

  对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL是与空字符串''相同的事.情况并非如此.例如,下述语句是完全不同的: mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (''); 这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串.第1种情况的含义可被解释为"电话号码未知&

oracle数据库中关于null排序的问题

问题描述: 在处理一般的数据记录中,对于数字类型的字段,在oracle的排序中,默认把null值做为大于任何数字的类型,当然对于varchar2类型的字段,默认也是该处理方式,但是客户要求排序的过程中,需要把null的字段默认排在前边(从小-->大).一般的order by xxxx,无法解决. 问题解决: 方案1: 可以使用复杂的使用sql: select * from(select a.*,rownum as my_sys_rownum from (select deptid,nvl(BDZ

小心陷阱!MySQL中处理Null时需注意两点_Mysql

MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是MySQL数据库的一种特性.如在普通的字段中(字符型的数据),空值就是表示空值.但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空.此时为出现什么情况呢(如下图)? 我先创建了一个表.在这个表中有两个字段:

mysql中is null语句的用法分享_Mysql

mysql数据库中is null语句的用法 注意在mysql中,0或 null意味着假而其它值意味着真.布尔运算的默认真值是1. 对null的特殊处理即是在前面的章节中,为了决定哪个动物不再是活着的,使用death is not null而不使用death != null的原因. 在group by中,两个null值视为相同. 执行order by时,如果运行 order by ... asc,则null值出现在最前面,若运行order by ... desc,则null值出现在最后面. nul

下面的代码为什么出错?该怎么去改?数据库中设置的允许为NULL,但不输入值时为什么会报错?

问题描述 下面的代码为什么出错?该怎么去改?数据库中设置的允许为NULL,但不输入值时为什么会报错? 解决方案 看下output窗格输出的错误提示,你的empAge是什么类型?是int?还是int,如果是int不能接收null