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模板一样,则只需进行一次检查、编译。

浙公网安备 33010602011771号