2016-11-23 11 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

3つのこと:(a)は、あなたの 'extractCalendar'メソッドが何をするのでしょうか? (b)クエリにセミコロンを使用しないでください。(c)何か助けにならなかった場合は、どうか説明してください。コードが何をしたいのか、そして現在何をしたいのかを説明してください。 –

答えて

0

単一引用符(')はSQLで文字列リテラルを表します。バインド変数を使用する場合は、?を引用符で囲むべきではありません。つまり、バインド値のプレースホルダではなく、疑問符付きの文字列リテラルに変更されます。

ちょうどそれを削除し、[OK]を次のようになります。

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

残念ながら、それは私を助けませんでした。 – qwerty

関連する問題