MySQL UPDATE запрос SHA512 MySQLSyntaxErrorException - PullRequest
0 голосов
/ 04 октября 2018

Кто-нибудь знает, почему INSERT с sha512 работает без проблем:

String query = " insert into user (username, password, surname, lastname, email, admin)"
            + " values (?, sha2(?, 512), ?, ?, ?, ?)";
    System.out.println("query: " + query);
    // create the java statement
    PreparedStatement ps = conn.prepareStatement(query);
    ps.setString(1, newUser.getUsername());
    ps.setString(2, getPsw());
    ps.setString(3, newUser.getSurename());
    ps.setString(4, newUser.getLastname());
    ps.setString(5, newUser.getEmail());
......
......

, а запрос UPDATE нет:

String query = "update user set password = sha2(?, 512) where id = "+getId()+")";
    System.out.println("query: " + query);
    // create the java statement
    PreparedStatement ps = conn.prepareStatement(query);
    ps.setString(1, psw_edit);

Я получаю следующее исключение MySQLSyntaxErrorException:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

У вас есть дополнительная закрывающая скобка ) в вашем коде ОБНОВЛЕНИЯ

Попробуйте изменить его на

String query = "update user set password = sha2(?, 512) where id = "+getId();

0 голосов
/ 05 октября 2018

Похоже, что у MySQL есть проблема с паролем .Возможно, он замечает пароль в качестве ключевого слова mySQL.Решение состоит в том, чтобы написать это так: password

Но все же лучшим решением будет хеширование пароля непосредственно в JAVA.Еще лучше сначала создать соленый хеш.

...