Java jdbc-PreparedStatement防止sql注入

2023-02-02 10:56:56 浏览数 (2)

PreparedStatement防止sql注入

在之前的一篇文章当中,写了java jdbc,mysql数据库连接的一篇文章,文章中包含了对于mysql的增改删查操作Java jdbc Mysql数据库连接 。

今天补充一个PreparedStatement防sql注入的一个写法。

使用createStatement获取数据库操作对象,然后紧接着使用executeQuery(sql),直接传递sql语句,会有sql注入的风险,要是别人在传递的参数值处填写sql语句,会影响安全性能。(当然也可以通过写正则表达式来判读用户传入的数据的合法性)。

接下来开始了解一下PreparedStatement的使用方法。

PreparedStatement的作用:

预编译SQL并执行SQL语句。

使用方法

①获取PreparedStatement对象

代码语言:javascript复制
//Sql语句中的参数值用?代替
String sql = "select * from user where user = ? and password=? ;"
//通过connection对象获取,并传入对应的sql语句
PreparedStatement pstmt = conn.preparedStatement(sql);

②设置参数值

代码语言:javascript复制
PreparedStatement对象.setXxx(参数1,参数2);//给?赋值

//其中,Xxx是数据类型
//参数1:?的位置编号,从1开始计
//参数2:?的值

示例代码(给?赋值)

代码语言:javascript复制
pstmt.setString(1,"zhangsan");
pstmt.setString(2,"123456");

③执行SQL

代码语言:javascript复制
executeQuery()
或
executeUpdate()
//不需要再传递sql语句

本文共 252 个字数,平均阅读时长 ≈ 1分钟

0 人点赞