任何人都可以告诉我PrepareStatement语法有什么问题

时间:2011-10-12 16:52:05

标签: jdbc

public ResultSet readSubSet(int No, String name, String case) throws SQLException {
    preparedStatement = connect.prepareStatement("SELECT *  FROM target WHERE myName=? AND myCase=? LIMIT ?,10");
    preparedStatement.setString(8, name);
    preparedStatement.setString(6, case);
    preparedStatement.setInt(1, No);
    resultSet = preparedStatement.executeQuery();   
    return resultSet;
}

跑完后我得到了:java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 2).

我的表定义myNamemyCaseTEXT,我可以使用prepareStatement.setString

2 个答案:

答案 0 :(得分:1)

当您调用setString时,传入两个参数,第一个是您要填充的参数的索引,第二个是您填充它的值。在您的情况下,您希望prepareStatement.setString(1,name);填写第一个参数prepareStatement.setString(2,case);以填写第二个参数,依此类推。

答案 1 :(得分:0)

在SQL中,您只有3个变量,并且您在prepareStatement.setString(8,name)中将变量8设置为名称...

看看@ http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html#supply_values_ps