程宇寒 2018-11-08 10:20 采纳率: 33.3%
浏览 1132

PreparedStatement防止sql注入的一些疑问?

我们都知道PreparedStatement可以防止sql注入,Statement会有sql注入的危险,却从来没关心过底层原理!数据库产商提供的数据库jar包中有PreparedStatement类。
说说我的理解,请大家指正!
这么一条sql语句: SELECT * FROM employees WHERE salary = ?
salary字段是数字类型的。

如果java中使用PreparedStatement来处理这条sql语句,我现在传入的值是8000 or 1 = 1

那么最终的sql语句为SELECT * FROM employees WHERE salary = '8000 or 1 = 1' (即PreparedStatement底层会在传入的值两边加上'单引号,而salary字段又是数字类型,所以最终这条sql语句估计会报错)
注意:如果填入的值中有'单引号,似乎也没关系,数据库产商的PreparedStatement底层的实现类照样在值的两边加上'单引号,并且会把值中的'单引号转义。
不知道大家怎么看呢?

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 template模板的参数问题
      • ¥15 C++程序设计 搭建项目框架
      • ¥50 搭建青柚H5过程中出现的问题
      • ¥15 查找处理学生信息问题,含多个文件,显示问题是无法调用其中一个文件
      • ¥15 simulink生成代码后提示告警
      • ¥16 jieba提取高频词,生成文件是空的
      • ¥15 怎么读取服务器中的文件去配置mongo的连接
      • ¥20 Python如何统计文本中两字及以上的词语个数
      • ¥15 MapReduce自定义对象怎么写
      • ¥15 看下哪里错了,程序应该没错