Когда я запускаю свою программу, она показывает ошибку, что столбец выходит за пределы диапазона. Подключение нормальноSQL Exception: индекс за пределами допустимого диапазона
Для exmaple
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)
У вас есть опечатки (отсутствующие кавычки). У вас также есть неправильные индексы (несколько раз 5) – cghislai
Вы не можете иметь имена столбцов в качестве параметра в подготовленном операторе - http://stackoverflow.com/questions/20008336/having-a-column-name-as-input-parameter -of-a-readystatement –
'SET 'studentid' =?' является недопустимым SQL. Имена колонок должны быть заключены в двойные кавычки, а не одинарные кавычки (или вообще не кавычки) –