Integer bb_id=rs2.getInt("b_id");
pst.setInt(2,bb_id);

解决方案 »

  1.   

    Integer bb_id=rs2.getInt("b_id"); 断点查看是,可以得到b_id的值
    难道是pst.setInt的错误,我用pst.setObject也不行
      

  2.   

    Integer bb_id=rs2.getInt("b_id");
    pst.setInt(2,bb_id); 
    Integer 不等于 int
    pst.setInt(2,bb_id.getInt..())
    而且 number 是不是应该转换成 decimal类型
      

  3.   


    ResultSet对象返回的一个int基础类型,应该是不可以直接转化为Integer对象的吧?
      

  4.   


    ResultSet对象返回的一个int基础类型,应该是不可以直接转化为Integer对象的吧?
      

  5.   

    单写个测试程序只执行这一句sql,把值写死分析
    还不行的话 换个高版本的驱动。
      

  6.   

    会不会REGISTER.nextval是无效的数字?
      

  7.   


    BigDecimal  bb_id =rs2.getBigDecimal("b_id");
    pst.setBigDecimal(2,bb_id);
     
    现在java与oracle数据的数据类型都对应了,还是报无效的数字,字符处理正确了啊
      

  8.   

    你oracle中number类型给出范围没有
    要是没有给就会出这个问题
    要不就是你的sequence没有生效
    sequence没有生效也有这个问题
    仔细检查一下吧
      

  9.   

    问题解决了,感谢楼上的回答
    BigDecimal  bb_id =rs2.getBigDecimal("b_id");
    得到以后不用set进去
    //不要此句了pst.setBigDecimal(2,bb_id);
    然后写到SQL中
    String sql3=" insert into hotel_info(h_id,b_id,h_name,h_privence,h_city,h_address,username) values(REGISTER.nextval,"bb_id",?,?,?,?,?)";
    这样就OK了
      

  10.   

    原来是number范围问题啊,呵呵。还是改下好,把number范围调正确了。
      

  11.   

    这种情况我一般都是用INTEGER所以没遇到过,oracle驱动真烂,兼容性真差
      

  12.   

    varchar 和 number 冲突了  比如用  非纯 number构成的varchar字段和 number字段比较如果一个varchar 中的数值是 12, 则可以进行下面的比较:varchar  ch  ch = ‘12’
    number   num select * from T
    Where ch = num如果ch中出现了非数字字符串比如 ch=‘呵呵  成12了’
    如果继续 select * from T
    where ch = num  则会报错的