惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

博客园 - 传说一梦

在class文件中读取Tomcat站点的根目录 我的新Blog文章 今天,我正式更换了自己的Blog空间 介绍两种国内访问Blogger.com的方式 absolute方式并不是好的Oracle分页查询方式 谈谈Ajax的“异步” 微软也会存在的Ajax误区——强制刷新页面内容 Scriptaculous 中的 "... getStyle is not a function." 错误 SVN Web Client中文修订版下载 词点——点评词汇,共享您的智慧! [链接] Ajax相关 推荐两款Firefox加速软件 取当月数据的算法 关于Linux下C语言编译器gcc不认识bool类型的问题 [专题] Ajax三种数据格式的读取实例 关于Ajax中XMLHttpRequest对象的status属性值问题 Window Live Toolbar 初体验 贵的比便宜的好? 庆祝杭州移动电视诞生一周年
Java中从Orcle里取出数据时,为什么提示“无效的列索引”
传说一梦 · 2006-06-03 · via 博客园 - 传说一梦

  第一次在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开始的情况,确实很难想到。因此,虽然只是一字之错,但我还是把它写了下来。