MySQL UPDATE查询SHA512 MySQLSyntaxErrorException

时间:2018-10-04 14:01:24

标签: mysql syntax sha512

有人知道为什么使用sha512的INSERT可以正常工作吗?

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 :(得分:0)

似乎MySQL的密码有问题。可能会注意到密码作为mySQL关键字。解决方案是以这种方式编写:password

但是,更好的解决方案是直接在JAVA中对密码进行哈希处理。最好先创建一个盐腌的哈希。

答案 1 :(得分:0)

您的UPDATE代码中还有一个右括号)

尝试将其更改为

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