java.sql.SQLException: ORA-01722: 无效数字,怎样把number的字段提取出来?Integer也不行

microns 2008-10-10 05:01:13
        
String sql4="select b_id from boss_info where username='"+username+"'";
rs2=stmt.executeQuery(sql4);
if(rs2.next()){
Integer bb_id=rs2.getInt("b_id");

String sql3=" insert into hotel_info(h_id,b_id,h_name,h_privence,h_city,h_address,username) values(REGISTER.nextval,?,?,?,?,?,?)";
pst=conn.prepareStatement(sql3);
pst.setString(1,h_name);
pst.setInt(2,bb_id);
pst.setString(3,h_privence);
pst.setString(4,h_city);
pst.setString(5,h_address);
pst.setString(6,username);

b_id在数据库中是number类型的字段,该怎么转化这个类型啊?oracle Datebase
...全文
2003 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hardycheng 2009-12-21
  • 打赏
  • 举报
回复
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 则会报错的
microns 2008-10-11
  • 打赏
  • 举报
回复

BigDecimal bb_id =rs2.getBigDecimal("b_id");
pst.setBigDecimal(2,bb_id);

现在java与oracle数据的数据类型都对应了,还是报无效的数字,字符处理正确了啊
huoyin 2008-10-11
  • 打赏
  • 举报
回复
会不会REGISTER.nextval是无效的数字?
sunyujia 2008-10-11
  • 打赏
  • 举报
回复
单写个测试程序只执行这一句sql,把值写死分析
还不行的话 换个高版本的驱动。
fatmind 2008-10-11
  • 打赏
  • 举报
回复

ResultSet对象返回的一个int基础类型,应该是不可以直接转化为Integer对象的吧?
fatmind 2008-10-11
  • 打赏
  • 举报
回复

ResultSet对象返回的一个int基础类型,应该是不可以直接转化为Integer对象的吧?
sunyujia 2008-10-11
  • 打赏
  • 举报
回复
这种情况我一般都是用INTEGER所以没遇到过,oracle驱动真烂,兼容性真差
sunyujia 2008-10-11
  • 打赏
  • 举报
回复
原来是number范围问题啊,呵呵。还是改下好,把number范围调正确了。
microns 2008-10-11
  • 打赏
  • 举报
回复
问题解决了,感谢楼上的回答
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了
jumpheightway 2008-10-11
  • 打赏
  • 举报
回复
你oracle中number类型给出范围没有
要是没有给就会出这个问题
要不就是你的sequence没有生效
sequence没有生效也有这个问题
仔细检查一下吧
sunyujia 2008-10-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 huoyin 的回复:]
会不会REGISTER.nextval是无效的数字?
[/Quote]
我在6楼说把值写死试试就知道了。不知道lz试没试。
KK3K2005 2008-10-10
  • 打赏
  • 举报
回复
Integer bb_id=rs2.getInt("b_id");
pst.setInt(2,bb_id);


Integer 不等于 int
pst.setInt(2,bb_id.getInt..())


而且 number 是不是应该转换成 decimal类型

microns 2008-10-10
  • 打赏
  • 举报
回复
Integer bb_id=rs2.getInt("b_id"); 断点查看是,可以得到b_id的值
难道是pst.setInt的错误,我用pst.setObject也不行
microns 2008-10-10
  • 打赏
  • 举报
回复
Integer bb_id=rs2.getInt("b_id");
pst.setInt(2,bb_id);

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧