您的位置:首页 > 编程语言 > Java开发

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

2006-06-03 17:58 537 查看

  第一次在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开始的情况,确实很难想到。因此,虽然只是一字之错,但我还是把它写了下来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐