java里对数据库中NULL的处理

Java是面向对象的高级语言。 java 中, null 表示类或对象的变量是空,不代表任何对象或实例,可以将 null 赋给引用类型变量,但不可以将 null 赋给基本类型变量;任何对象在没有进行初始化时,它默认的值都是null。没有实体的对象称为空对象;空对象不能使用,即不能让一个空对象去调用方法产生行为;大名鼎鼎的 NullPointerException 就是因为应用程序试图在需要对象的地方使用 null 时抛出来的。例如下面这样的使用便会抛出 NullPointerException 异常:
String str = null;
System.out.println(str.toString());


有许多问题的答案我们并不知晓,我们被巨大的未知领域包围着。在数据库中“未知的”这个概念用 NULL 表示; NULL 在数据库表示未知。 NULL 不等于零或空格。 NULL  值不视作大于、小于或等于任何其它值。当一个变量、列或常量具有 NULL 值时,它的值是未知的、不确定的。“未知的”与空白或零或布尔值 FALSE 完全不同。“未知的”意味着该变量根本没有值,因此不能与其他变量直接进行比较。
NULL 值具有以下三个规则:
(1)一个 NULL 不与其他任何值相等;一个 NULL 不与其他任何值不等;
(2)在对一个 NULL 值应用函数时,一般都会得到一个 NULL 值作为结果。
(3)一般而言,只要执行涉及一个或多个NULL值的比较操作,那个比较的结果也是 NULL 值,它不同于 TRUE FALSE ,因而这样的比较除了失败,没有任何帮助作用。
在数据库中我们可以通过特定的关键字得到 NULL
例如:有如下结构的表 employee(emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date) 其中 minit 列可以为 NULL 。可以使用 IS NULL IS NOT NULL 关键字。
SELECT * FROM employee WHERE employees IS NOT NULL
SELECT * FROM employee WHERE employees IS NULL

java 不同的是数据库中可以将 NULL 赋给任何数据类型。这样一来,我们从数据库中读取字段的值后,在java程序中如何判断读取的值是否为 null 呢?用 name==null 吗?显然不行, == 是判断两个变量或实例是不是指向同一个内存空间,除非这个 name String 类型的。而 equals() 方法呢?是判断两个变量或实例所指向的内存空间的值是不是相同。

java.sql.ResultSet 接口中的 boolean wasNull() 方法可以解决这个问题:
boolean wasNull(): 报告最后一个读取的列是否具有值  SQL NULL 。注意,必须首先对列调用一个获取方法尝试读取其值,然后调用 wasNull () 方法查看读取的值是否为  SQL NUL L。如果发生数据库访问错误将抛出 SQLException
如: Java 代码

String value="";  
int n;  
while(rs.next()){  
value=rs.getString("name");  
if(rs.wasNull()){  
System.out.println("null");  
}else{  
System.out.println(value);  
}  

n=rs.getInt("number");  
if(rs.wasNull()){  
System.out.println("null");  
}else{  
System.out.println(n);  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值