java - JDBC UPDATE With preparedStatement 导致 java.sql.SQLException : Parameter index out of range (3 > number of parameters, 这是 2)

标签 java mysql jdbc prepared-statement

<分区>

我面临java.sql.SQLException: Parameter index out of range (3 > number of parameters, is 2). 在更新 'reset_info'< 的一两列时/strong> 表,其中有五列(id、mobile_tower_id、reset_value、date_time、clientip)。 'id' 是自动生成的主键。 我想更新特定行的“reset_value”

下面是源码:

        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Connecting to database...");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);

        String sql = "UPDATE reset_info SET reset_value = ? WHERE id = ?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1, 100);
        ps.setInt(3, 1000);

        ps.executeUpdate();
        conn.close(); 

下面是我的堆栈跟踪:

 Connecting to database...
java.sql.SQLException: Parameter index out of range (3 > number of parameters, which is 2).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3813)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3795)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3840)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:3784)
at cdot.dsa.cfms.dbconnect.NewClass.main(NewClass.java:38)

是否必须为表格的每一列放置占位符('?')?

通过 java.sql.Statement 更新单个列是有效的,但我遇到了 java.sql.preparedStatement 的异常。

请帮忙。概念性想法将受到高度赞赏。

最佳答案

这个 ps.setInt(3, 1000); 必须是 ps.setInt(2, 1000); 因为你只需要占位符。

Is it mandatory for to put placeholder('?') for each column of the table?

占位符用于参数而不是列!

关于java - JDBC UPDATE With preparedStatement 导致 java.sql.SQLException : Parameter index out of range (3 > number of parameters, 这是 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096480/

相关文章:

java - 如何使用此自定义 ExecutorService 使关闭正常工作?

java - 编程课的注意事项?

java - h :commandLink not working when inside a list

java - 有没有办法在 UI (JavaFX) 中显示 tess4j 进度?

java - 如何指定JPA连接列名称?

mysql - 多个表的复合键 : do I need a separate query to check table type?

mysql - 在 mysql 中聚合和计算值

java - 从 jTextField Java 获取 SQL 表名称

java - 如何从 java jdbc 的结果集中获取列的大小(以字节为单位)?

java - java.lang.ClassNotFoundException 或无法找到或加载主类错误