oracle学习笔记(七) 预编译Statement介绍与使用
2023-02-18 16:37:02 时间
预编译Statement优点
- 执行效率高
由于预编译语句使用占位符 ”?”,在执行SQL之前语句会被先发送到Oracle服务器进行语法检查和编译等工作,并将SQL语句加入到Oracle的语句缓冲池里,随后再对SQL语句中的占位符”?”设置定值。
那么也就说如果你要执行1000行插入的时候第一次先SQL语句发送给Oracle服务器处理,接着以后只传递值给占位符就可以了。
因此它不需每次传递大量的SQL语句也无需对每条SQL语句做语法检查和编译所以比较高效。 - 安全,可防止SQL注入攻击
//用户登录的时候,假设有下面的语句
select * from student where username='' and password=''
//写为字符串为
String sql = "select * from student where username='"+username+"' and password='+password+"'"
//用户如果输入' or 1=1 --
//对应的SQL语句
select * from student where username='' or 1 =1 -- and password=''
//上面这句SQL等同于下面
select * from student
- Statement执行过长语句,拼接字符串很繁琐,容易出错
使用
1.创建预编译语句对象
通过Connection对象来穿件一个预编译语句的对象
PrepareStatement ps = conn.prepareStatement("select * from student where num = ? and name = ?")
2.设置占位符的内容
占位符的索引从1开始,使用setXxx方法,数据要跟列的数据对应
Void setXxx((int parameterIndex, Xxx value); Xxx表示相应的数据类型。
设置点位符位置的值,第一个参数是 1,第二个参数是 2,…..
ps.setInt(1,12);
ps.setString(2,"张三");
3.执行
- `boolean execute()`
在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。
- `ResultSet executeQuery()`
在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
- `int executeUpdate()`
在此 `PreparedStatement` 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句
比如 `INSERT`、`UPDATE` 或 `DELETE` 语句;
或者是无返回内容的 SQL 语句,比如 `DDL` 语句。
返回一个已修改数据库中的数据数目数
```
ps.executeQuery();
```
Statement与PrepareStatement比较
Statement | PreparedStatement | |
创建语句对象的方法 | Connection.createStatement( ) | Connection.preparedStatement( sql ) |
查询 | executeQuery( sql ) 要提供SQL语句 | executeQuery( ) 不提供提供SQL语句,但随后要设置占位符的值 |
插入、更新、删除 | executeUpdate( sql ) 要提供SQL语句 | executeUpdate( ) 不提供提供SQL语句 |
执行语句 | execute() | execute() |
相关文章
- Vue&Element 前端应用开发之菜单和路由的关系
- 在微信框架模块中,基于Vue&Element前端的微信公众号和企业微信的用户绑定
- 在微信框架模块中,基于Vue&Element前端的事件和内容的管理
- 在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
- 使用DevExpress的GridControl实现多层级或无穷级的嵌套列表展示
- 在微信框架模块中,基于Vue&Element前端,通过动态构建投票选项,实现单选、复选的投票操作
- 使用Vue-TreeSelect组件实现公司-部门-人员级联下拉列表的处理
- 利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
- 利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理
- 使用代码生成工具快速开发ABP框架项目
- 基于ABP框架的SignalR,使用Winform程序进行功能测试
- 如何快速开发Winform应用系统
- 看图知义,Winform开发的技术特点分析
- 循序渐进VUE+Element 前端应用开发(33)--- 邮件参数配置和模板邮件发送处理
- 循序渐进VUE+Element 前端应用开发(32)--- 手机短信动态码登陆处理
- ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
- 循序渐进VUE+Element 前端应用开发(31)--- 系统的日志管理,包括登录日志、接口访问日志、实体变化历史日志
- 一个人的思想:漫谈技术社区
- IDDD 实现领域驱动设计-由贫血导致的失忆症
- ASP.NET MVC 6 一些不晓得的写法