我无法使用where子句在JDBC上执行更新查询。我想通过连接一些变量来执行查询。
protected void updateEmail(String Email, String Username) {
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost/project", "root", "");
String query = "update access set email=" + Email + " where username=" + Username;
Statement st = conn.createStatement();
st.executeUpdate(query);
} catch (SQLException ex) {
System.out.println(ex);
} finally {
try {
conn.close();
} catch (SQLException ex) {
}
}
}
它说:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'bhusal1' in 'where clause'
答案 0 :(得分:2)
字符串应该在两个引号'name'
之间而不是您必须使用PreparedStatement来避免语法错误或SQL注入:
String query = "update access set email=? where username=?";
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, email);
ps.setString(2, name);
ps.executeUpdate();
答案 1 :(得分:1)
这很可能是连接请求的问题。您使用的方法非常糟糕,可能会导致任何问题(包括安全性)。
为避免出现问题,请在需要提交sql查询参数时使用PrepareStatement
。
这是一个可以解决问题的例子:
void updateEmail(String email,String username) {
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/project", "root", "")) {
String query = "update access set email = ? where username = ?";
try (PreparedStatement statement = connection.prepareStatement(query)) {
statement.setString(1, email);
statement.setString(2, username);
statement.executeUpdate();
}
}
catch (SQLException e) {
System.out.println(e);
}
}
答案 2 :(得分:0)
您应该将您的变量电子邮件和用户名放在where子句中的引号之间,以便能够执行更新查询