当前位置: 技术问答>java相关
**请大家帮忙看一下:一个判断string是否为空的奇怪问题**
来源: 互联网 发布时间:2015-04-11
本文导语: 数据存放在oracle9i中,通过sql语句判断是否为空时,可得到正确答案, 但为什么通过java程序判断时,它不执行为空的判断语句呢。 java程序如下: if(value==null) System.out.println("value=null"); else if (value.equal...
数据存放在oracle9i中,通过sql语句判断是否为空时,可得到正确答案,
但为什么通过java程序判断时,它不执行为空的判断语句呢。
java程序如下:
if(value==null)
System.out.println("value=null");
else if (value.equals(""))
System.out.println("vlaue is empty");
else System.out.println("value!=null value="+value);
输出为:
value!=null value=null
明明数据为null,可它只执行最后一句,为什么?
但为什么通过java程序判断时,它不执行为空的判断语句呢。
java程序如下:
if(value==null)
System.out.println("value=null");
else if (value.equals(""))
System.out.println("vlaue is empty");
else System.out.println("value!=null value="+value);
输出为:
value!=null value=null
明明数据为null,可它只执行最后一句,为什么?
|
同意robber(海盗) 的说法,你的value是从数据库中取出的,如果为null,取出的值会自动转成"null",写入数据库也有一样的问题,值为null字符串写入数据库中会被自动转换成"null"的字符串
|
好象记得数据库中记录的SQL NULL与JAVA 中的NULL是有区别的!
你自己看看RESULTSET.GETSTRING()的帮助!
你也可以试试用RESULTSET的WASNULL()判断它是不是SQL NULL!
你自己看看RESULTSET.GETSTRING()的帮助!
你也可以试试用RESULTSET的WASNULL()判断它是不是SQL NULL!
|
之所以产生那个问题因为value的值就是null,如果真为空的话,那么if(value.equals("null") 会出错,应该保险的是:
if(value==null || value.equals("null"))才正确,绝不出错!
if(value==null || value.equals("null"))才正确,绝不出错!
|
作为一个严格的程序员,你在插入数据库的时候,应该考虑这些问题,我一般在model get*****(),一般检测它是否为空或为null,否则返回一个"N/A".