Java中从Orcle里取出数据时,为什么提示“无效的列索引”
第一次在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開始的情況,確實很難想到。因此,雖然只是一字之錯,但我還是把它寫了下來。轉載于:https://www.cnblogs.com/legendry/archive/2006/06/03/416631.html
總結
以上是生活随笔為你收集整理的Java中从Orcle里取出数据时,为什么提示“无效的列索引”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DropDownList 不能有多个项被
- 下一篇: 无关程序,一点感言.