首页 >

Oracle预编译的SQL语句处理

数据库|mysql教程Oracle预编译的SQL语句处理
Oracle教程,Oracle预编译的SQL语句处理,数据库
数据库-mysql教程
论坛 网站 源码下载,ubuntu重新载入用户,法律禁止网络爬虫,php法语,seo tool centerlzw
预编译语句PreparedStatement 是java.sql中的一个接口,它是Statement的子接口。通过Statement对象执行SQL语句时,需要将SQL语句
张贴网源码,vscode允许py乱码,ubuntu guest,查询tomcat端口,sqlite 有道,国外五金行业网页设计,asp.net连接远程数据库,160邮箱服务器,浏览器html5播放器插件,前端框架为什么不升级es标准,ex爬虫,thrift php,seo很难吗,springboot事物同步,织梦热门标签调用,外国网站的框架,手机网页大转盘源码,asp 利用模板增删改查,企业网站带后台,jsp登录页面美化,帝国后台管理系统下载,商城程序 手机lzw
网页源码变成网站,ubuntu进程占用100,微信小程序用tomcat,爬虫状态码406,商洛高中生php开发培训,江西seo厂家lzw
A、预编译的SQL语句处理

预编译语句PreparedStatement 是java.sql中的一个接口,它是Statement的子接口。通过Statement对象执行SQL语句时,需要将SQL语句发送给DBMS,由DBMS首先进行编译后再执行。预编译语句和Statement不同,在创建PreparedStatement 对象时就指定了SQL语句,该语句立即发送给DBMS进行编译。当该编译语句被执行时,DBMS直接运行编译后的SQL语句,而不需要像其他SQL语句那样首先将其编译。预编译的SQL语句处理性能稍微高于普通的传递变量的办法。

B、预编译语句的作用

·提高效率:当需要对数据库进行数据插入、更新或者删除的时候,程序会发送整个SQL语句给数据库处理和执行。数据库处理一个SQL语句,需要完成解析SQL语句、检查语法和语义以及生成代码;一般说来,处理时间要比执行语句所需要的时间长。预编译语句在创建的时候已经是将指定的SQL语句发送给了DBMS,完成了解析、检查、编译等工作。因此,当一个SQL语句需要执行多次时,使用预编译语句可以减少处理时间,提高执行效率。

·提高安全性:假如有恶意的SQL语句:String sql = “select * from t_student where name= ‘”+varname+”‘ and passwd='”+varpasswd+”‘”;如果我们把” or ‘1’ = ‘1’ “作为varpasswd传入进来.用户名随意,看看会成为什么?
select * from t_student = ‘随意’ and passwd = ” or ‘1’ = ‘1’; 因为’1’=’1’肯定成立,所以可以任何通过验证.更有甚者:把” ‘;drop table t_student;”作为varpasswd传入进来,则:select * from tb_name = ‘随意’ and passwd = ”;drop table tb_name;有些数据库是不会让你成功的,但也有很多数据库就可以使这些语句得到执行.而如果使用预编译语句.传入的任何内容就不会和原来的语句发生任何匹配的关系.只要全使用预编译语句,就用不着对传入的数据做任何过虑.而如果使用普通的statement,有可能要对drop,;等做费尽心机的判断和过虑。

C、预编译语句的使用

1、创建 PreparedStatement 对象
以下的代码段(其中 conn 是 Connection 对象)创建包含带4个 IN 参数占位符的 SQL 语句的 PreparedStatement 对象:

String sql = “insert into t_customer values(?,?,?,?)”;//组织一条含有参数的SQL语句
PreparedStatement ps = conn.prepareStatement(sql);
ps对象包含语句 insert into t_customer values(?,?,?,?),它已发送给DBMS,并为执行作好了准备。
2、传递 IN 参数
在执行 PreparedStatement 对象之前,必须设置每个 ? 参数的值。这可通过调用 setXXX 方法来完成,其中 XXX 是与该参数相应的类型。例如,如果参数具有Java 类型 long,,则使用的方法就是 setLong。setXXX 方法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值。例如,以下代码将第一个参数设为 输进来的account,第二个参数设为 password:
ps.setString(1, account);
ps.setString(2, password);
一旦设置了给定语句的参数值,其值将一直保留,直到被设置为新值或者调用clearParameters()方法清除它为止。代码如下:


Oracle预编译的SQL语句处理
  • Oracle对文件系统write through cache的使用
  • Oracle对文件系统write through cache的使用 | Oracle对文件系统write through cache的使用 ...

    Oracle预编译的SQL语句处理
  • Oracle的RBO/CBO优化器浅析
  • Oracle的RBO/CBO优化器浅析 | Oracle的RBO/CBO优化器浅析 ...

    Oracle预编译的SQL语句处理
  • Oracle对字符转义的处理
  • Oracle对字符转义的处理 | Oracle对字符转义的处理 ...