パラメタを含む SQL 文から PreparedStatement オブジェクトを得て、その SQL 文を実行しようとするとエラーが出る場合。次のようなエラーメッセージが特徴的。
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
この場合、SQL 文の '?' の前後にクオートが入っていないか確認する。例えば、
private final String GET_CUSTOMER = "SELECT * FROM CUSTOMER WHERE CUSTOMERID = '?'"; private final String ADD_CUSTOMER = "INSERT INTO CUSTOMER VALUES ('?', '?', '?')";
はダメなので、
private final String GET_CUSTOMER = "SELECT * FROM CUSTOMER WHERE CUSTOMERID = ?"; private final String ADD_CUSTOMER = "INSERT INTO CUSTOMER VALUES (?, ?, ?)";
とすること。