PrepareStatement

PrepareStatement作用:

1、预编译SQL语句;预防SQL注入。

什么是SQL注入?

SQL注入就是操作输入来修改事先定义好的SQL语句,达到通过代码执行对服务器进行攻击的方式

 ① 获取PrepareStatement对象

//SQL语句中的参数值可以使用?占位符代替
String sql = "SELECT * FROM user where username= ? and password = ?";
//创建PreparedStatement对象,并传入对应的sql语句
PreparedStatement preparedStatement = connection.prepareStatement(sql);

 ② 设置参数值

preparedStatement.setXxx(参数1,参数2),来给?赋值。
Xxx:数据类型。例如:setStirng(参数1,参数2)
参数:

    参数1:?的位置编号,从1开始。
    参数2:?的值。

示例代码:
preparedStatement.setString(1,"admin");
preparedStatement.setString(2,"123456");

 ③ 执行SQL

ResultSet result = preparedStatement.executeQuery();//不需要再传递SQL

 PrepareStatement 好处:

1、预编译SQL,性能更高。

2、防止SQL注入,将敏感字符进行转义。

 开启PrepareStatement 预编译功能:设置 MySQL 连接 URL 参数:useServerPrepStmts=true

 PrepareStatement 原理:

1、在获取 PrepareStatement 对象时,将SQL模板发送给MySQL服务器进行检查、编译(耗时)。

2、执行时就不需要再进行上述操作,速度更快。

3、如果SQL模板一样,则只需进行一次检查、编译。

  

posted @ 2022-12-12 04:36  Amireux-126  阅读(21)  评论(0)    收藏  举报