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 + " = ?";