Java中从Orcle里取出数据时,为什么提示“无效的列索引”
第一次在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)題。
- 上一篇: DropDownList 不能有多个项被
- 下一篇: 无关程序,一点感言.