JDBC如何避免SQL注入
JDBC如何避免SQL注入
什么是SQL注入
用户输入的数据中有SQL关键字或语法并且参与了SQL语句的编译,导致SQL语句编译后的条件含义为true,一直得到正确的结果。这种现象称为SQL注入。
如何避免SQL注入
由于编写的SQL语句是在用户输入数据,整合后再进行编译。所以为了避免SQL注入的问题,我们要使SQL语句在用户输入数据前就已进行编译成完整的SQL语句,再进行填充数据。
使用PreparedStatement
来避免SQL注入
PreparedStatement
继承了Statemen
t接口,执行SQL语句的方法无异。
PreparedStatement
的作用
- 预编译SQL语句,效率高
- 安全,避免SQL注入
- 可以动态的填充数据,执行多个同构的SQL语句
参数标记
//1.预编译SQL语句
PreparedStatement pstmt = coonection.prepareStatement("select * from where username=? and password=?");
- 注意:JDBC中的所有参数都由
?
符号占位,这被称为参数标记。在执行SQL语句之前,必须为每个参数提供值。
动态参数绑定
pstmt.setXXX(下标,值) 参数下标从1开始
//1.预编译SQL语句
PreparedStatement pstmt = conn.prepareStatement ("select * from user where username = ? and password = ?") ;
//2.为参数下标赋值
pstmt.setString (1,username);
pstmt.setString(2,password);
执行SQL语句,接受结果
ResultSet resultSet = preparedStatement.executeQuery();
本文作者:Techoc
本文链接:https://www.cnblogs.com/techoc/p/13625569.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 博客园2025新款「AI繁忙」系列T恤上架
· Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
· C# LINQ 快速入门实战指南,建议收藏学习!
· Redis实现高并发场景下的计数器设计
· 上周热点回顾(4.7-4.13)