Ваша проблема в том, что, хотя вы мудро использовали подготовленный оператор в своем коде для обновления, вы фактически никогда не использовали его для столбца username
в предложении WHERE
.Следовательно, запрос, который вы выполняете в настоящее время, не будет интерпретироваться как сравнение некоторого ввода с username
.Скорее значение username
будет интерпретировано как столбец.Попробуйте эту версию:
String resultsDatabase = sb.substring(separator.length());
String sql = "UPDATE students SET events = ? WHERE username = ?";
PreparedStatement myStmt = conn.prepareStatement(sql);
myStmt.setString(1, resultsDatabase);
myStmt.setString(2, user_name);
myStmt.executeUpdate();
Обратите внимание, что вы могли только что попробовали следующее:
String sql = "UPDATE students SET events = ? WHERE username = '" + user_name + "'";
Но, пожалуйста, свяжите значение с ?
заполнителемвместо этого, как я предложил выше.Одно из преимуществ использования операторов заключается в том, что это избавляет вас от необходимости беспокоиться о том, как экранировать ваши данные в запросе.