【问题标题】:Numeric overflow Exception in java JDBCjava JDBC中的数值溢出异常
【发布时间】:2014-06-17 17:31:47
【问题描述】:

此查询返回数字溢出异常。从 1 到 14 的值很容易检索,但不能检索更大的值(从 15 开始)。

我正在使用 ORACLE XE。我该如何解决这个问题?

这是我的代码:

pst=con.prepareStatement("Select * from student where sut_id like 'Kul7Dub514'");
rs=pst.executeQuery();
while(rs.next)
{
    smob.setText(Integer.toString(rs.getInt(15)));
    fmob.setText(Integer.toString(rs.getInt(16)));
    mmob.setText(Integer.toString(rs.getInt(17)));
    col.setText(rs.getString(18));
    address.setText(rs.getString(19));
}

学生桌:

create table student ( stu_id varchar(10) primary key, stu_image Blob,
 stu_first_name varchar(20) not null,
 stu_middle_name varchar(20) not null,
 stu_last_name varchar(20) not null,
 fat_first_name varchar(20) not null,
 fat_middle_name varchar(20),
 fat_last_name varchar(20) not null,
 mot_first_name varchar(20),
 mot_middle_name varchar(20),
 mot_last_name varchar(20),
 dob Date,
 gender varchar(6),
 ac_yr varchar(10),
 mobno number(11),
 fatmob number(11),
 motmob number(11),
 edu_center varchar(50),
 address varchar(150) )

【问题讨论】:

  • 学生表的元数据是什么。

标签: java oracle jdbc


【解决方案1】:

由于您的数据库中的数据是 Number(11),因此它不适合整数。

试试 Long 和 rs.getLong(15);

【讨论】:

    【解决方案2】:

    您很可能不会对这些“数字”进行任何数学运算。由于您不将它们视为数字,而是将它们视为标识符。您应该使用 Java 类型 BigDecimal。这是一种与 Oracle 数据类型NUMBER 最相似的类型。或者你也可以使用jdbc驱动oracle.sql.NUMBER提供的数据类型。

    【讨论】:

      猜你喜欢
      • 2018-02-09
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      相关资源
      最近更新 更多