"select ZYName,YLName,YDY,YX,GX,ZhongYao.ZZ as ZZ from Yaolei,ZhongYao where Yaolei.YLID=ZhongYao.YLID and ZYName like '%"+name+"%'"; 这个语句有错误吗
时间: 2024-03-04 15:48:17 浏览: 124
有错误
这个查询语句的语法是正确的,但是它存在SQL注入的风险,因为它使用了字符串拼接的方式来构造SQL查询语句,而没有使用PreparedStatement来防止SQL注入攻击。
为了避免SQL注入攻击,我们应该使用PreparedStatement来代替字符串拼接,像这样:
```
"select ZYName,YLName,YDY,YX,GX,ZhongYao.ZZ as ZZ from Yaolei,ZhongYao where Yaolei.YLID=ZhongYao.YLID and ZYName like ?"
```
然后,在设置PreparedStatement参数时,我们可以使用setString方法来设置查询参数,像这样:
```
pstmt.setString(1, "%" + name + "%");
```
这样就可以避免SQL注入攻击,同时正确执行SQL查询语句了。
阅读全文