preparedStatement 理解
来源:互联网 发布:db2删除一列的sql语句 编辑:程序博客网 时间:2024/05/20 02:22
preparedStatement :可以翻译为 预编译语句.
mysql 参考文档中的例子:
mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';mysql> PREPARE stmt2 FROM @s;mysql> SET @a = 6;mysql> SET @b = 8;mysql> EXECUTE stmt2 USING @a, @b;+------------+| hypotenuse |+------------+| 10 |+------------+mysql> DEALLOCATE PREPARE stmt2;
预编译语句 stmt2 在进行prepare 定义的时候会被先编译优化,然后保存在缓存中.这个预编译语句是session 变量.
优势:
1.而后面传入的参数不再被数据库当做SQL 语句来执行,所以可以防止SQL 注入.
2.因为prepared statements 是保存在内存中,第二次传入不同的变量时,直接调用,不需要再次分析 sql,编译,优化,所以性能上要比单独再次执行sql 语句要好.
限制:
为了防止SQL注入攻击,PreparedStatement不允许一个占位符(?)有多个值,在执行有IN子句查询的时候这个问题变得棘手起来。下面这个SQL查询使用PreparedStatement就不会返回任何结果.
SELECT * FROM loan WHERE loan_type IN (?)preparedSatement.setString(1, "'personal loan', 'home loan', 'gold loan'");
参考:
mysql Prepared Statements reference
JDBC为什么要使用PreparedStatement而不是Statement
0 0
- preparedStatement 理解
- Statement和PreparedStatement理解
- PreparedStatement与Statement理解
- 深入 理解 Statement 和 PreparedStatement
- 深入理解Statement、PreparedStatement对象
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入理解 Statement 和 PreparedStatement
- 理解 Statement 和 PreparedStatement区别
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 深入 理解 Statement 和 PreparedStatement
- 矩阵连乘详解
- Tomcat.localhost(Problem)
- JavaScript DOM对象控制
- Qt5.5.0编译移植到Linux-Arm-A9
- 数据结构中内部排序总结
- preparedStatement 理解
- C6000 DSP技术深度探索(2)---链接命令文件(cmd)
- CORS 头缺少 'Access-Control-Allow-Origin'
- CAS实现SSO单点登录原理
- 初学Oracle的一点心得
- NoSQL数据库的事务处理与一致性
- 只是背着女友和别人热忱地相爱了,而已
- 求:未排序数组中累加和为给定值的最长子数组长度
- 送给和我一样曾经浮躁过的PHPer程序猿,希望有帮助