2016-11-23 64 views
0

我嘗試將編號傳遞給PrepareStmt,但得到此錯誤。我無法理解我的問題。爲什麼我得到「java.sql.SQLException:列索引無效」?

查詢:

private static final String SQL_FIND_ALL_CALENDARS = "SELECT * FROM calendar WHERE idCall > '?';"; 

功能:

private List<Calendar> findAll(Connection con) throws SQLException { 
     List<Calendar> calendar = new ArrayList<Calendar>(); 
     PreparedStatement prsmt = null; 
     ResultSet rs = null; 
     try { 
      prsmt = con.prepareStatement(SQL_FIND_ALL_CALENDARS); 
      prsmt.setInt(1, TestOracleJDBC.idCall); 
      rs = prsmt.executeQuery(); 
      while (rs.next()) { 
       Calendar calendar2 = extractCalendar(rs); 
       calendar.add(calendar2); 
      } 
     } catch (SQLException ex) { 
      ex.printStackTrace(); 
     } finally { 
      rs.close(); 
      prsmt.close(); 
     } 
     return calendar; 
    } 

在其他類我的參數:

public static int idCall = 1; 
+0

三件事:(一)那麼你的'extractCalendar'方法呢?請編輯問題以包含它,(b)不要在查詢中使用分號,(c)如果沒有幫助,請解釋爲什麼不能。解釋你想要代碼做什麼以及它現在正在做什麼。 –

回答

0

單引號(')表示在SQL字符串文字。當使用綁定變量時,不應該用引號括住?--這會將其更改爲帶問號的字符串文本,而不是綁定值的佔位符。

只是刪除它,你應該確定:

private static final String SQL_FIND_ALL_CALENDARS = 
    "SELECT * FROM calendar WHERE idCall > ?"; 
    // Here -------------------------------^ 
+0

不幸的是,它並沒有幫助我。 – qwerty

相關問題