Java中从Orcle里取出数据时,为什么提示“无效的列索引”

本文讲述了作者在使用Java连接Oracle数据库进行查询时,因误用字段序号而导致‘无效的列索引’错误的问题。通过请教高手得知原因在于Java中ResultSet类型getstring(int index)方法的索引是从1开始的,而非通常的从0开始,从而成功解决了问题。

======================================================
注:本文源代码点此下载
======================================================

第一次在java中用jdbc连接oracle数据库,连接通了,但是一个简单的sql查询,却报告“无效的列索引”。

开始,我以为是oracle里的表索引没有设置。于是,我给要查询的表添加了索引。但是,还是报同样的错。

记得,前段时间,我用jsp中用jdbc连接过oracle数据库,sql查询查出来过记录。只是当时用的数据表不同。于是,我又试着用与jsp中同样的代码,同样的数据表再测了一次。结果,还是不行。

没办法,只得请教一位公司里的java高手,让她帮忙看一下。原来,是我取字段的时候,字段序号写错了。高手就是高手,一看就看出来了。

错误代码如下:

……

resultset rs = null;

try {

……

if (rs.first()) {

string col = rs.getstring(0);// 错误代码处

}

}

}

……

完整的正确代码如下:

// 省略数据库连接部分

string sqlquery = "select * from users";

preparedstatement ps = null;

resultset rs = null;

try {

ps = conn.preparestatement(sqlquery,

resultset.type_scroll_insensitive,

resultset.concur_read_only);

rs = ps.executequery();

if (rs.first()) {

string col = rs.getstring(1);// 修改后的正确代码

}

}

} catch (sqlexception se) {

throw se;

} catch (exception ex) {

throw ex;

} finally {

if (rs != null)

rs.close();

if (ps != null)

ps.close();

}

从上面的代码可以看出,resultset类型的getstring(int index)方法,是以1开始的。我用的是0,所以出错了。

vb中数字以1开关,java同c++一样,数字一般以0开始。而像这样突然在java里面出现以1开始的情况,确实很难想到。因此,虽然只是一字之错,但我还是把它写了下来。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值