Java SQL异常:索引超出范围

Java SQL异常:索引超出范围,java,jdbc,Java,Jdbc,当我运行我的程序时,它显示列超出范围的错误。连接正常 为埃克斯梅普 updateRecoredtoStudent(15, "Annies","Bot"," Ionia", "1/1/2013","firstname","Anny") 我认为你的代码声明是错误的。请尝试以下方法 String updateTableSQL = "UPDATE student SET 'studentid' = ? 'firstname' = ? 'lastname' = ? 'address' = ? dat

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

为埃克斯梅普

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



我认为你的代码声明是错误的。请尝试以下方法

String updateTableSQL = "UPDATE student SET 'studentid' = ? 'firstname' = ? 'lastname' = ? 'address' = ? dateofbirth' = ?  WHERE " + cond_col + "= ?";
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_val);

只能设置列值。如果要传递动态列名,应该使用query将其连接起来。还有一件事在列名之间缺少了

更改SQL语法如下:

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
因此,您的SQL更新查询将是:

String updateTableSQL = "UPDATE student SET studentid=?, firstname=?, lastname=?, address=?, dateofbirth=? WHERE " + fieldName + " = ?";

您有拼写错误(缺少引号)。您也有错误的索引(多次5)。您不能在准备好的语句中将列名作为参数-
SET'studentid'=?
是无效的SQL。列名需要用双引号括起来,而不是单引号(或者根本没有引号)。我检查,但是所有输入都是正确的,并且在表中使用了相应的限制。我认为sql查询中的错误之处,可能是在PreparedStatement中。您还需要删除列名周围的
。否则,您将尝试为字符串赋值,这将不起作用。好的,我将尝试。谢谢您的帮助
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);
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
String updateTableSQL = "UPDATE student SET studentid=?, firstname=?, lastname=?, address=?, dateofbirth=? WHERE " + fieldName + " = ?";