StringBuffer sd=new StringBuffer(); sd.append("select count(1) "); sd.append("from CLM_COUNTERPARTY "); sd.append("where id= " +id); Query query = this.getEntityManager().createNativeQuery(sd.toString()); int i= (int) query.getSingleResult();哪里错了
时间: 2024-03-25 07:41:57 浏览: 103
ch4.rar_stringbuffer
这段代码可能会存在 SQL 注入的问题,因为在拼接 SQL 语句时没有对变量 id 进行合法性校验和防注入处理。
建议使用 PreparedStatement 来预编译 SQL 语句,然后使用参数绑定的方式来传入变量,比如:
```
String sql = "select count(1) from CLM_COUNTERPARTY where id = ?";
Query query = this.getEntityManager().createNativeQuery(sql);
query.setParameter(1, id);
int i = (int) query.getSingleResult();
```
这样可以有效避免 SQL 注入的问题。同时,建议对传入的变量进行类型校验和范围校验,避免非法输入导致的异常或错误。
阅读全文