预编译的优点(Statement和PrepareStatement 的区别)

原创 2013年12月04日 22:35:33

在执行SQL命令时,有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。

而熟悉JDBC编程的大侠们都会选择使用PreparedStatement对象,主要因为使用预编译对象PreparedStatement时,有以下几个优点:

1、效率高

 PreparedStatement可以尽可能的提高访问数据库的性能,我们都知道数据库在处理SQL语句时都有一个预编译的过程,而预编译对象就是把一些格式固定的SQL编译后,存放在内存池中即数据库缓冲池,当我们再次执行相同的SQL语句时就不需要预编译的过程了,只需DBMS运行SQL语句。所以当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,特别是的大型的数据库中,它可以有效的也加快了访问数据库的速度。
2、大大提高代码的可读性和可维护性

例如我们在向数据库插入数据:

一种是使用Statement对象

   java.sql.Statement   stmt=conn.createStatement();

  stmt.executeUpdate("insert into student (name,id,number,count) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");
  另一种是使用PreparedStatement对象

String  sql ="insert into student values(null,?,?,?)";

java.sql.PreparedStatement pstmt=conn.preparedStatement(sql);

pstmt.setString(1,var1);
pstmt.setString(2,var2);
pstmt.setString(3,var3);
pstmt.setString(4,var4);
pstmt.executeUpdate();

使用占位符?代替

将参数与SQL语句分离出来,这样就可以方便对程序的更改和延续,同样,也可以减少不必要的错误。

3、开源防止SQL注入最主要的


什么时候使用预编译语句?

   一般是在需要反复使用一个SQL语句时才使用预编译语句,预编译语句常常放在一个fo r或者while循环里面使用,通过反复设置参数从而多次使用该SQL语句。为了防止SQL注入漏洞,在某些数据操作中也使用预编译语句。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

相对于Statement,PreparedStatement的优点

转载自http://it.deepinmind.com/jdbc/2014/03/18/JDBC%E5%B8%B8%E8%A7%81%E9%9D%A2%E8%AF%95%E9%A2%98%E9%9B%...

AJAX简单入门

这些天一直在看AJAX视频,看了视频之后,发现AJAX并不是那么简单,有些知识点理解起来有点困难,而且好多都是陌生的概念,因此想写篇博客来简单的了解一下,对AJAX有一个进一步的认识,然后再接着看视频...

预编译和预处理

预编译和预处理以及编译选项的控制   总是对这三个不是很清晰,今天回来后准备转载,记在博客上。嘿嘿,我是不是很调皮啊 一 预编译: 为了增加编译速度往往要提前对一...
  • omgle
  • omgle
  • 2011-09-13 11:00
  • 22963

预编译的作用和目的

预编译又称为预处理 , 是做些代码文本的替换工作。 处理 # 开头的指令 , 比如拷贝 #include 包含的文件代码, #define 宏定义的替换 , 条件编译等, 就是为编译做的预...

从零开始学JDBC--1.7 PreparedStatement-- 预编译sql

PreparedStatement和Statement的区别:1.语法不同 PreparedStatement支持占位符,预编译Statement只能执行静态sql2.PreparedStateme...

prepareStatement与Statement的区别

prepareStatement与Statement的区别 1.区别: stmt=conn.CreateStatement(); resultSet rs=stmt.executeQuery(sql)...

JDBC中Statement和PrepareStatement的区别及特性

主要区别: Statement执行一条sql就得编译一次,PrepareStatement只编译一次; 常用后者原因在于参数设置非常方便; 还有就是sql放置的位置不同; 常用后者原因在于参数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)