このクエリは、数値のオーバーフロー例外を返します。 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) )
DB内のデータはNumber(11)
であるため、これは整数に適合しません。
Longとrs.getLong(15)
;を試してください。
ほとんどの場合、その「数値」を使用して数学的演算を実行しません。それらを数値としてではなく識別子として扱うため、Java type BigDecimal
を使用する必要があります。これは、Oracleデータ型NUMBER
に最も類似した型ですまたは、jdbcドライバーが提供するデータ型も使用できますOracle.sql.NUMBER
。