我是靠谱客的博主 健壮台灯,最近开发中收集的这篇文章主要介绍oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

binary_float和binary_double类型是从Oracle10g开始的两个新数据类型,在一定情况下,可以替代原有的number类型使用,具体大家可以去查相关的文档。

但是,由于JDBC jar包存在bug的原因,会出现如下的问题:

解决的办法目前有两种:

1. 使用ojdbc14.jar,和上面帖子中一样,不使用rs.getDouble(("balance"),而是使用(Double)rs.getObject("balance")。

2. 使用ojdbc5.jar或者ojdbc6.jar,直接使用rs.getDouble(("balance"),也不会报错。

当然,按照《Java解惑》的建议,在需要精确计算的地方(如货币计算),应该使用int、long或者BigDecimal,所以我在这里贴一段示例代码:

@Override public int withdrawMoney(String accNum, int pwd, double balance)   throws Exception {  // TODO Auto-generated method stub  String sql = "select a.balance from t_accout a where a.accnum = ? and a.pwd = ?";  int result = -1;  Connection conn = null;  PreparedStatement pstm = null;  ResultSet rs = null;  try {   conn = getConn();   pstm = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);   pstm.setString(1, accNum);   pstm.setInt(2, pwd);      rs = pstm.executeQuery();   if(rs.next()) {    //如果成立,则说明找到了数据;    // 使用ojdbc14.jar的情况    // double temp = (Double)rs.getObject("balance");    // 使用ojdbc6.jar的情况    // double temp = rs.getDouble("balance");    // 这里需要注意,由于double类型精度不高,所以需要使用BigDecimal类来进行操作    BigDecimal temp = rs.getBigDecimal("balance");    //判断当前是帐户的余额是否大于所要取的数量    if(balance > temp.doubleValue()) {     result = 0;  //表示余额不足    } else {     //表示余额足够,则做更新     // 这里需要注意,由于double类型精度不高,所以需要使用BigDecimal类来进行操作,具体可以参考《Java解惑》谜题2:找零时刻;但是与书中所说不同的是:这里我使用了new BigDecimal(double),但是并没有出现他所说的问题。     rs.updateDouble("balance", temp.subtract(new BigDecimal(balance)).doubleValue());     rs.updateRow(); //在线更新     result = 1;    }   } else {    result = -1; //表示没有找到数据,也就是帐号或密码出错.   }     } catch (Exception e) {   e.printStackTrace();  } finally {   releaseAll(conn, pstm, null);  }  return result; }

最后

以上就是健壮台灯为你收集整理的oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型的全部内容,希望文章能够帮你解决oracle的double类型,JDBC中使用Oracle的binary_float和binary_double类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部