美文网首页Java 杂谈程序员
撩课-JavaWeb之Statement接口与预编译语句及调用存

撩课-JavaWeb之Statement接口与预编译语句及调用存

作者: 撩课学院 | 来源:发表于2018-12-23 20:23 被阅读18次

Statement接口

接口

Statement接口作用

        用于进行Java程序和数据库之间的数据传输

具体类有3个实现

        Statement
            用于对数据库进行通用访问,使用的是静态sql
        PreparedStatement
            PreparedStatement 用于预编译模板SQL语句,在运行时接受sql输入参数
        CallableStatement
            要访问数据库存储过程时使用
                也可以接受运行时输入参数。

预编译语句

没有预编译语句时

        没有预编译语句,所有的sql都是进行拼接

预编译语句

        PreparedStatement 用于预编译模板SQL语句
        在性能和代码灵活性上有显著地提高
        PreparedStatement 对象使用 ? 作为占位符,即参数标记;
        使用 setXXX( index,value) 方法将值绑定到参数中
            每个参数标记是其顺序位置引用,注意 index 从 1 开始;

PreparedStatement 对象执行SQL语句
executeQuery()

executeUpdate()


注意,它们都没有参数

内部优化

示例图

支持优化情况

            MySql不支持
            Oracle支持

更安全

            可以防SQL注入

什么是sql注入

            就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

用户登录

为什么PrepareState就能够防注入

            之所以PreparedStatement能防止注入,
            是因为它把单引号转义了,变成了\',
            这样一来,就无法截断SQL语句,进而无法拼接SQL语句 基本上没有办法注入了。

调用存储过程

1.在数据库当中定义一个存储过程

2.JDBC调用一个参数的存储过程

3.编写输入参数和输出参数的存储过程

4.JDBC调用二个参数的存储过程

相关文章

网友评论

    本文标题:撩课-JavaWeb之Statement接口与预编译语句及调用存

    本文链接:https://www.haomeiwen.com/subject/ybtmkqtx.html