java Statement与PreparedStatement在面对char遇到的问题

来源:互联网 发布:水果网络销售 编辑:程序博客网 时间:2024/06/11 13:31
          公司的系统在进行安全检测时,遇到SQL注入的问题,因为公司的系统采用的Statement 执行SQL操作的,然后对数据又没有进行防SQL注入的处理,所以引发了这个问题!我负责解决这个问题,当时想的是把所有的Statement 改成PreparedStatement,因为PreparedStatement是自带防SQL注入的,但是在修改时,遇到了一个奇怪的问题,那就是把Statement 改成PreparedStatement之后,输入代码正常执行,可是就是查询不到数据,把SQL打印出来,放到数据库里执行,又可以查到数据!当时各种百度,各种调试,都百思不得其解,最后无意中看到数据库表字段的类型是char,突然想到是不是因为这个问题,然后果断在SQL的where条件的字段里都trim了,然后果断查询出数据!然后又做了几个小实验,得出一个结论,Statement应该会自己处理空格问题!但是PreparedStatement不会!改成varchar不会遇到这个问题!
0 0