java - SQL 异常 : the index is out of range

标签 java jdbc

当我运行我的程序时,它显示列超出范围的错误。连接正常

例如

updateRecoredtoStudent(15, "Annies","Bot"," Ionia", "1/1/2013","firstname","Anny")


 private static void updateRecordToStudent(int studentid, String firstname, String lastname,String address, String dateofbirth, String cond_col, String cond_val) throws SQLException {

    Connection dbConnection = null;
    PreparedStatement preparedStatement = null;

    String updateTableSQL = "UPDATE student SET 'studentid' = ? 'firstname' = ? 'lastname' = ? 'address' = ? dateofbirth' = ? WHERE ? = ?";
    try {
        dbConnection = getDBConnection();
        preparedStatement = dbConnection.prepareStatement(updateTableSQL);

                    preparedStatement.setInt(1, studentid); 
        preparedStatement.setString(2, firstname); 
                    preparedStatement.setString(3, lastname);
                    preparedStatement.setString(4, address); 
                    preparedStatement.setString(5, dateofbirth);
                    preparedStatement.setString(6, cond_col);
                    preparedStatement.setString(7, cond_val);


        // execute update SQL stetement
        preparedStatement.executeUpdate();

        System.out.println("Record is updated to STUDENT table!");

    } catch (SQLException e) {

        System.out.println(e.getMessage());

    } finally {

        if (preparedStatement != null) {
            preparedStatement.close();
        }

        if (dbConnection != null) {
            dbConnection.close();
        }

    }

}


 Student table contains
-studentid(int-PK)
-Firstname(String)
-lastname(String)
-Address(String)
-Dateofbirth(String)

最佳答案

String updateTableSQL = "UPDATE student SET studentid = ?, firstname = ?, lastname = ?, address = ?, dateofbirth = ? WHERE "+cond_col+" = ?";
preparedStatement.setInt(1, studentid); 
preparedStatement.setString(2, firstname); 
preparedStatement.setString(3, lastname);
preparedStatement.setString(4, address); 
preparedStatement.setString(5, dateofbirth);
preparedStatement.setString(6, cond_val);

只能设置列值。如果你想传递动态列名,你应该将它与查询连接起来。列名称之间还缺少 , 的内容。

关于java - SQL 异常 : the index is out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32807427/

相关文章:

java - 将 Squirrel 客户端连接到嵌入式 Teiid 服务器

java - 如何用更少的代码行来初始化和使用许多类似的Jbutton?

java - DBUtils - 使用 ResultSetHandler

java - 无法解决 "java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index"错误

Java SWT 链接小部件 - 如何删除超链接下划线?

java - 处理多线程以从结果集中创建受密码保护的 Excel

java - Scala 等价于 Java 的静态 block 是什么?

java - JPA 中的 getSingleResult() 抛出异常

java - 在 JDBC 类中捕获 UnknownHostException

java - com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : Too many connections