日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

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

發(fā)布時(shí)間:2025/3/15 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中从Orcle里取出数据时,为什么提示“无效的列索引” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  第一次在Java中用JDBC連接Oracle數(shù)據(jù)庫(kù),連接通了,但是一個(gè)簡(jiǎn)單的SQL查詢,卻報(bào)告“無(wú)效的列索引”。

  開始,我以為是Oracle里的表索引沒(méi)有設(shè)置。于是,我給要查詢的表添加了索引。但是,還是報(bào)同樣的錯(cuò)。

  記得,前段時(shí)間,我用JSP中用JDBC連接過(guò)Oracle數(shù)據(jù)庫(kù),SQL查詢查出來(lái)過(guò)記錄。只是當(dāng)時(shí)用的數(shù)據(jù)表不同。于是,我又試著用與JSP中同樣的代碼,同樣的數(shù)據(jù)表再測(cè)了一次。結(jié)果,還是不行。

  沒(méi)辦法,只得請(qǐng)教一位公司里的JAVA高手,讓她幫忙看一下。原來(lái),是我取字段的時(shí)候,字段序號(hào)寫錯(cuò)了。高手就是高手,一看就看出來(lái)了。

  錯(cuò)誤代碼如下:

??? ??? ??? ……
??? ??? ??? ResultSet rs = null;??? ??? ??? ???
??? ??? ??? try {
??? ??? ??? ??? ??? ……
??? ??? ??? ??? ??? if (rs.first()) {
??? ??? ??? ??? ??? ??? ??? String col = rs.getString(0);?? // 錯(cuò)誤代碼處
??? ??? ??? ??? ??? }??? ??? ??? ??? ???
??? ??? ??? ??? }??? ??? ??? ???
??? ??? ??? }
??? ??? ??? ……

  完整的正確代碼如下:

??? ??? ??? // 省略數(shù)據(jù)庫(kù)連接部分

??? ??? ??? 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,所以出錯(cuò)了。

VB中數(shù)字以1開關(guān),Java同C++一樣,數(shù)字一般以0開始。而像這樣突然在Java里面出現(xiàn)以1開始的情況,確實(shí)很難想到。因此,雖然只是一字之錯(cuò),但我還是把它寫了下來(lái)。

轉(zhuǎn)載于:https://www.cnblogs.com/legendry/archive/2006/06/03/416631.html

總結(jié)

以上是生活随笔為你收集整理的Java中从Orcle里取出数据时,为什么提示“无效的列索引”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。