当前位置:  数据库>oracle

解决Java中int不能为空而Oracle数据库中Number可以的问题

    来源: 互联网  发布时间:2017-05-15

    本文导语: 前言:空(NULL)和零(0)一样吗?当然不。Null表示不存在或不确定,0表示没有。在应用Hibernate开发中遇到了一个问题:Oracle数据库中某字段(Number类型)没有值(即NULL),其映射的JavaBean对应属性为int类型。在获取数据时,...

前言:空(NULL)和零(0)一样吗?当然不。Null表示不存在或不确定,0表示没有。
在应用Hibernate开发中遇到了一个问题:Oracle数据库中某字段(Number类型)没有值(即NULL),其映射的JavaBean对应属性为int类型。在获取数据时,提示“将NULL值赋给基本类型失败”的错误。怎么解决呢?对我这个.NET转Java的新手来说还真有点晕。

1.先来谈谈int和Integer

int永远也不会为空,因为它是primitive数据类型。初始时缺省为0,而不是null。
Integer是对象类,倒可能是null。

因此
int i1;
Integer i2;

此时
i1==0  为true
i2==0  会出错吧
i2==null为true

 

2.修改int为Integer的解决方案

将配置文件改为:

JavaBean中做以下修改:

public void setA252(Integer a252) {
  if(a252 != null){
   this.a252 = a252;
  }
  else{
   this.a252 = 0;
  }
 }

3.JDBC的解决方案

String result = rs.getString(1);

if (result != null){
a252 = Integer.parseInt(result);
}
else{
a252 = 0;
}

4.装箱、拆箱及其他

类型转换是在1.5中才有的。在明白怎么进行判断之前,我们必须明白所谓的类型转换到底是什么东西。在1.5之前,你如果需要把一个int转换为Integer,你就必须做new Integer(intValue);这样的代码工作。因此在1.5中,Java的缔造者们认为这种方法过于低效率,因此引入了C#中的auto-boxing理念,因此你可以用类型转换的方法创造出一个Integer类实例。但是,其中的原理还是和以前一致的。因为在int类型中,永远不可能有null的取值,因此也不可能生成一个null的Integer对象。

另外可以强制转换下,也就是 (Object)int x == null;


    
 
 

您可能感兴趣的文章:

  • log引起的mysql不能启动的解决方法
  • 急!!!Jbuilder中汉字不能正确显示,怎么解决???
  • JBUILDER6下控件都不能显示中文吗?请指教该怎么解决
  • 我不能回到KDE界面了,如何解决?
  • Applet中包含Swing组件而不能正确绘画如何解决?
  • getch和wgetch为什么不能输入中文,该如何解决,急!~
  • 大家好.我的OPEN OFFICE 不能显示中文,应该如何解决呀?
  • 我使用的是root用户登陆,但却不能编辑/etc/profile文件,该如何解决。
  • redhat非法关机后,不能进入系统怎么解决?
  • 请问各位老师fedora 8下不能出声音,怎么解决?
  • Eclipse对printf()不能输出到控制台的快速解决方法
  • linux7.2下xmm不能发声了,声卡是via AC'97 Audio control,怎么解决??谢谢!!
  • REAHAT LINUX9.0的Mozilla浏览器不能正常安装FLASH插件?怎么解决??
  • 我不信,BCB上就没有了高手!如真不能解决,耻辱!
  • KDE桌面图标及任务栏都不能显示 是什么原因 该怎样解决?多谢
  • JBuilder 6.0不能访问borland包的问题,如何解决?也许很容易。
  • 不解决也给分。我的键盘和鼠标不能用。
  • linux下键盘上一个键不能用,请求解决!!!
  • 解决mysql不能插入中文Incorrect string value
  • 解决Codeigniter不能上传rar和zip压缩包问题
  • 求数据库解决方案===求数据库解决方案
  • Linux下Oracle数据库,dbstart持续不动,数据库无法启动解决
  • 从Access数据库读大块数据问题,为什么5119字节左右是极限,怎么解决??
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • 读取sybase数据库中数据出现乱码的问题如何解决?
  • 有谁知道policytool是干什么的,能解决applet访问数据库的问题吗??100分,跟贴有分!
  • 使用EntityBean将中文存入数据库时出现乱码,如何解决?
  • 关于系统重装后Oracle数据库完全恢复的解决办法
  • 谁能帮我解决从数据库中取数据和下拉框连动结合的问题,分数双倍奉上!
  • SQLServer 数据库变成单个用户后无法访问问题的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我上传文件的时候,如果遇到文件名是中文的,虽然可以上传,但不可以下载,怎么解决?
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • 用Java可以解决这个问题吗?急!!!
  • 紧急求助,有关mount刷新的问题!解决了还可以加分!
  • 设置了alias以后重新登录就没有了,怎么解决呢?设什么权限可以删除文件?
  • 请问以下问题可以解决吗(invoking),急等
  • 执行当前目录下可执行程序时前面必须要加上./才可以,如何解决?
  • 继续送分..5秒就可以解决的问题哦..make后报这个?
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • 一个很基本的问题,可是我怎么也解决不了,哪位可以提点建议,多谢!!!
  • 谁帮我解决这个问题,给他1000分都可以。我郁闷坏了。。。。。
  • 升级内核后,usb鼠标不可以使用了,如何解决?
  • 可以解决的小问题
  • WIN2000在Red Hat Linux 7.3安装后慢得可以,你们是怎么解决的?
  • 请教:在linux reahat系统下,如果把root的密码忘记,如何可以解决?
  • 网络编程中的共享内存问题,哪位高手可以帮忙解决啊?
  • ubuntu的Linux与windows可以互ping,但是无法访问windows的共享文件夹,怎么解决
  • 安装samba又出问题了,我哭了?这个也可以用yum解决么?
  • 看了那么多帖子,但这个问题似乎没有人可以通俗而完美的解决。
  • 上次问题解决了,原来是extern被重定义了。。。天阿,关键字也可以被重定义。。。。。欢迎接分
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 解决 select 挡住div的解决方法
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • andriod中UIScrollView无法正常滚动的解决方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,