Java SQL语句错误分析及修正 - 如何正确使用占位符
以下语句有两个问题:
-
SQL语句中查询的是'sal',但是在while循环中获取的是'ename'和'sal',应该修改为获取'sal'字段的值。
-
SQL语句中使用了占位符,但是在设置参数时,没有使用占位符,而是直接拼接字符串,应该使用占位符传入参数。
修改后的代码如下:
public void sqlZhang() throws SQLException {
String sql = "SELECT sal FROM emp where ename like ?";
PreparedStatement ps = conn.prepareStatement(sql);
String str = "张%";
ps.setString(1,str);
ResultSet rs = ps.executeQuery();
while (rs.next()){
double sal = rs.getDouble("sal");
System.out.println(sal);
}
}
代码分析:
-
查询字段不一致: 原代码中,SQL语句查询的是'sal'字段,但在循环中却尝试获取'ename'和'sal'两个字段的值,导致代码逻辑错误。修正后的代码中,只获取了'sal'字段的值。
-
参数设置错误: 原代码中使用了占位符'?', 但在设置参数时,直接拼接字符串,导致代码存在SQL注入风险。修正后的代码使用占位符设置参数,避免了潜在的SQL注入漏洞。
重要提醒: 始终使用占位符来设置SQL语句参数,以防止SQL注入攻击,确保代码的安全性。
原文地址: http://www.cveoy.top/t/topic/oBIS 著作权归作者所有。请勿转载和采集!