Я написал следующий метод UPDATE для своей базы данных MySQL.
public int update(User u) {
int status = 0;
Connection connection = null;
PreparedStatement stm = null;
try {
connection = ConnectionConfiguration.getConnection();
stm = connection.prepareStatement("UPDATE users SET f_name=?
l_name=? WHERE id=?");
stm.setString(1, u.getName());
stm.setString(2, u.getLname());
stm.setInt(3, u.getId());
status = stm.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
} finally {
if (stm != null) {
try {
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
} return status;
}
Затем я обновляю данные в классе JSP, как показано ниже:
<% int id =Integer.parseInt(request.getParameter("Userid"));
UserM um = new UserM();
User u = new User();
u = um.select(id);
%>
<form method = "GET" action = "EditServlet">
<input type = "hidden" name = "id" value = "<%=u.getId()%>">
Name:<input type = "text" name = "fname" value = "<%=u.getName()%>"><br>
Last name:<input type = "text" name = "lname" value = "<%=u.getLname()%>"><br>
<input type = "submit" value = "Edit">
</form>
В EditServlet я написал следующий код.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String rid=request.getParameter("id");
int id=Integer.parseInt(rid);
String fname =request.getParameter("fname");
String lname=request.getParameter("lname");
User u =new User();
u.setName(fname);
u.setLname(lname);
u.setId(id);
UserM um = new UserM();
int up_status = um.update(u);
if (up_status > 0) {
request.getRequestDispatcher("/GetUserInfo").forward(request, response);
} else {
request.setAttribute("errorMessage", "Could not change info");
request.getRequestDispatcher("/GetUserInfo").forward(request, response);
}
}
После запуска кода и обновления данных он каждый раз показывает сообщение об ошибке. Что-то не так с реализацией моего кода?
это сообщение об ошибке, которое я указал с помощью request.setAttribute ("errorMessage", "Не удалось изменить информацию"); Это все, что он делает. Не обновляет никаких данных
Нет, не показывает никаких исключений
close().
Также почему вы выполняете часть select в JSP? Вы уверены, что запись получена? Почему вы делаете Get при отправке формы? Пора заняться отладкой
Я сделал выбор в JSP bc. Мне нужно показать данные в форме, и да, запись получена. Также при публикации сообщения об ошибке я добавил методы получения для пользователя, и он отображает новые значения, которые я ввожу, но просто не обновляет их в БД.
Я решил это. В моем обновлении SQL произошла ошибка
Не могли бы вы добавить к своему вопросу, что вы сделали, чтобы этот вопрос мог быть полезен другим людям в будущем.




В этом коде
User u =new User();
u.setName(fname);
u.setLname(lname);
вы не устанавливаете значение User::id, поэтому, когда вы собираетесь использовать его в update(User u), значение будет равно нулю.
изменить на
User u =new User();
u.setName(fname);
u.setLname(lname);
u.setId (id);
Извините за ошибку. На самом деле это есть в моем коде. Я, должно быть, забыл написать это здесь.
Что ж, в этом случае может показаться, что у вас нет пользователя в вашей БД с этим id
ну, я проверил свою БД, и есть пользователь с данным идентификатором, поэтому я не знаю, в чем проблема.
Проблема была с моим оператором SQL. Я забыл запятую после f_name. Должно было быть: "ОБНОВЛЕНИЕ пользователей SET f_name = ?, l_name =? WHERE id =?"
В первой версии вашего вопроса был , - как мы можем успешно ответить?
это было потому, что когда я написал это здесь, я поместил это и в моем исходном коде я забыл это
updateчто такоеres?