Я пытаюсь обновить данные пользователя, но получаю ошибку синтаксиса SQL:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: в синтаксисе SQL возникла ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '(имя, фамилия, пользователь, пароль, идентификатор_профиля) VALUES (' Test 1rrr ',' Test 1 'в строке 1
Для клиента нажмите на кнопку обновить , я делаю это:
dato_usuario.setId_usuario(Integer.parseInt(txtId_Usuario.getText()));
dato_usuario.setNombre(txtNombre.getText());
dato_usuario.setApellido(txtApellido.getText());
dato_usuario.setUsuario(txtUsuario.getText());
dato_usuario.setContrasena(txtContrasena.getText());
dato_usuario.setId_perfil(cboPerfil.getSelectedIndex());
// Envío los datos a un método de otra clase que contiene todo para conectarse con MySQL
if (logica_usuario.actualizar(dato_usuario)) { // Si el método "actualizar" retorna true
JOptionPane.showMessageDialog(null, "El usuario ha sido actualizado.", "Éxito", JOptionPane.INFORMATION_MESSAGE);
} else {
JOptionPane.showMessageDialog(null, "Error!, no se ha podido actualizar el usuario.", "Error", JOptionPane.ERROR_MESSAGE);
}
MySQL Code :
public boolean actualizar(Dato_usuario d_usr) {
sSQL = "UPDATE usuario SET"
+ "(nombre, apellido, usuario, contrasena, id_perfil)"
+ "VALUES (?, ?, ?, ?, ?) WHERE id_usuario=?";
boolean resultado;
// Java 7 try-with-resources
try (PreparedStatement pstm = con.prepareStatement(sSQL)) {
pstm.setString(1, d_usr.getNombre());
pstm.setString(2, d_usr.getApellido());
pstm.setString(3, d_usr.getUsuario());
pstm.setString(4, d_usr.getContrasena());
pstm.setInt(5, d_usr.getId_perfil());
pstm.setInt(6, d_usr.getId_usuario());
pstm.executeUpdate();
resultado = true;
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "SQLException:\n" + e, "Error: actualizar(Dato_usuario d_usr)", JOptionPane.ERROR_MESSAGE);
resultado = false;
}
return resultado;
}
Я пытаюсь скажите ему, чтобы он обновил данные пользователя с помощью id_usuario = ?
, но, поскольку подстановочный знак ?
из id_usuario
находится на последнем месте, я передаю его как номер 6.
Я действительно не знаю, если это верно, я новичок с SQL
.
Он мне кажется, что твое решение SQL
в твоей переменной sSQL
deberГ, - чтобы быть asГ - для UPDATE
:
sSQL = "UPDATE usuario SET "
+ "nombre = ?"
+ ",apellido = ?"
+ ",usuario = ?"
+ ",contrasena = ?"
+ ",id_perfil = ? "
+ "WHERE id_usuario=?";
В следующий соединение podrГЎs находить руководитель использования решений SQL
и Вашего синтаксиса для operacines CRUD (SELECT
, INSERT
, UPDATE
и DELETE
) utilizanndo MySQL
и Java