String sql = "update manager set password='"+password+"',age="+age+",phone='"+phone+"',address='"+address+"' where username='"+username+"'";这个sql语句哪里出错了
时间: 2023-06-12 21:06:02 浏览: 69
在 SQL 语句中,变量应该被正确地引用。在这个语句中,变量被单引号包含,但是在变量之间缺少加号或者逗号。正确的代码应该是:
```
String sql = "update manager set password='" + password + "',age=" + age + ",phone='" + phone + "',address='" + address + "' where username='" + username + "'";
```
这样,变量将被正确地插入到 SQL 语句中,避免语法错误。但是,需要注意的是,使用字符串拼接的方式拼接 SQL 语句是容易导致 SQL 注入攻击的。因此,建议使用 PreparedStatement 来执行 SQL 语句。
相关问题
@Override public void sureUpPassword(String userAccount, String userPassword) { String sql = update person set userPassword = +userPassword+ where userAccount= +userAccount+ ;
这段代码存在 SQL 注入漏洞,应该使用 PreparedStatement 来避免。正确的代码应该是:
```
@Override
public void sureUpPassword(String userAccount, String userPassword) {
String sql = "UPDATE person SET userPassword = ? WHERE userAccount = ?";
try (Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setString(1, userPassword);
ps.setString(2, userAccount);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
```
这样可以防止用户恶意输入特殊字符导致 SQL 注入攻击。
public boolean updateManager(String username, String password,int age, String phone, String address) throws Exception { // TODO Auto-generated method stub Manager manager = new Manager(); // "update user set age="+age+",phone='"+phone+"',address='"+address+"' where username='"+username+"'"; System.out.println(address+"66666"); //String sql = "update manager set password='"+password+"',age="+age+",phone='"+phone+"',address='"+address+"' where username='"+username+"'"; String sql = "update manager set password='" + password + "',age=" + age + ",phone='" + phone + "',address='" + address + "' where username='" + username + "'"; /*String sql ="update manager set (age,password,phone,adderss) values(age,password,phone,adderss) where username='"+username+"'"; */ System.out.println(username+"11111111、、、、"); Statement st = this.conn.createStatement(); int rs = st.executeUpdate(sql); if (rs > 0) { System.out.println("333333333"); return true; } return false; }这段代码哪里出错了
这段代码可能存在以下问题:
1. 在实例化Manager对象时,没有传入任何参数,可能导致后续操作出错。
2. 在构造SQL语句时,部分字符串没有用引号括起来,例如:System.out.println(address "66666"),应该改为System.out.println(address + "66666")。
3. SQL语句的拼接可能有误,可以在执行SQL前先打印输出一下SQL语句,检查是否正确拼接。
4. 可能存在SQL注入漏洞,建议使用PreparedStatement代替Statement来执行SQL语句。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)