1:创建时的区别: 
   Statement stm=con.createStatement(); 
   PreparedStatement pstm=con.prepareStatement(sql); 
执行的时候: 
    stm.execute(sql); 
    pstm.execute();

2: pstm一旦绑定了SQL,此pstm就不能执行其他的Sql,即只能执行一条SQL命令。 
stm可以执行多条SQL命令。

3: 对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。

4:当需要外部变量的时候,pstm的执行效率更高.

下面是一个statement的列子 : 
Java代码 
package com.JDBC.proc;

import java.sql.*;

public class StatementTest { 
      
    public static void main(String args[]){ 
          
        Connection conn=null; 
        Statement stm=null; 
        ResultSet rs=null; 
          
        try { 
            conn=DBTool.getConnection(); 
            String sql="select EmpNo,EName from emp " + 
                    "where empNo=7499"; 
            stm=conn.createStatement(); 
            rs=stm.executeQuery(sql); 
            while(rs.next()){ 
                System.out.println(rs.getInt(1)+"---"+rs.getString(2)); 
            } 
        } catch (SQLException e) { 
            e.printStackTrace(); 
        } catch (Exception e) {

e.printStackTrace(); 
        }finally{ 
            DBTool.release(rs, stm, conn); 
            } 
    } 
      
}

他的主要作用阐述Statement的用法。

下面是关于prepareStatement的列子: 
Java代码 
package com.JDBC.proc;

import java.sql.*; 
public class PrepareStatement { 
      
    public static void main(String[] args){ 
          
        Connection conn=null; 
        PreparedStatement psmt=null; 
        ResultSet rs=null; 
          
        try { 
            conn=DBTool.getConnection(); 
            String sql="select EmpNo,Ename " + 
                    "from emp " + 
                    "where EmpNo=?"; 
            psmt=conn.prepareStatement(sql); 
            psmt.setInt(1, 7499); 
              
            rs=psmt.executeQuery(); 
            while(rs.next()){ 
                System.out.println(rs.getInt(1)+"---"+rs.getString(2)); 
                  
            } 
        } catch (SQLException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        }finally{ 
            DBTool.release(rs, psmt, conn); 
        } 
          
    }

}

总结:

第一:

(1)prepareStatement会先初始化SQL,先把这个SQL提交到数据库中进行预处理,多次使用可提高效率。

(2)Statement不会初始化,没有预处理,每次都是从0开始执行SQL。

第二:

(1)prepareStatement可以替换变量

在SQL语句中可以包含?,可以用ps = conn.prepareStatement("select * from Cust where ID=?");

int sid = 1001;

ps.setInt(1,sid);

rs = ps.executeQuery();

可以把?替换成变量。

(2)Statement 只能用 int sid = 1001;

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from Cust where ID="+sid);来实现

PreparedStatement的这三处优点:
一、代码的可读性和可维护性;
二、高效性;
三、安全性。

prepareStatement和Statement的区别的更多相关文章

  1. prepareStatement与Statement的区别

    prepareStatement与Statement的区别 1.区别: 转 http://blog.csdn.net/zsm653983/article/details/7296609 stmt=co ...

  2. JDBC中prepareStatement 和Statement 的区别

    package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedSta ...

  3. javaWeb7——PrepareStatement原理,Pareparedstatement和Statement的区别

    查询数据返回的结果集: ResulSet: 代码实现 : PrepareStatement原理 代码实现: Pareparedstatement和Statement的区别: 注意: Statement ...

  4. JDBC增删改查,PreparedStatement和Statement的区别

    此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...

  5. PreparedStatement与Statement的区别

    PreparedStatement与statement的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象 ...

  6. java中prepareStatement与createStatement的区别

    首先来看两段代码: 第一个使用createStatement() public void delete( int id){ try { Connection c = DBUtil.getConnect ...

  7. PreparedStatement 和 Statement 的区别(推荐使用PreparedStatement)

    PreparedStatement与Statement在使用时的区别: 1.Statement: String sql=" "; executeUpdate(sql) 2. Pre ...

  8. java.sql.preparedstatement和java.sql.statement的区别

    本文转自CSDN,然后整理了一遍.原文出处:CSDN JDBC(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.stateme ...

  9. PreparedStatement和Statement的区别

    转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1. PreparedStatement接口继承Statement, PreparedS ...

随机推荐

  1. Creating HTML table with vertically oriented text as table header 表头文字方向

    AS an old question, this is more like info or reminder about vertical margin or padding in % that ta ...

  2. 9.Parameters

    1.Optional and Named Parameters calls these methods can optionally not specify some of the arguments ...

  3. [JAVA设计模式]第三部分:结构模式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. HDU 3549 Flow Problem(最大流)

    HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...

  5. git学习笔记03-本地git常用操作及原理-文件增删改

    1.查看git状态 git status  这个可以告诉我们对git做了哪些操,比如增删改 2.既然我们修改了东西,有的时候想看看修改了什么,毕竟我们的记忆力并不如电脑 git diff 文件名 (默 ...

  6. redis数据库选择-select

    1.关于redis的select命令用法: SELECT index 切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值. 默认使用 0 号数据库. 可用版本: > ...

  7. 将客户端将IE9强制为IE7

    有时候由于浏览器的问题我们在IE7中开发的东西需要在IE9中展示 但是会出现兼容性的问题. 那么我们可以同技巧将用户端的浏览器强行以IE7的文档模式展示我们的网页 下面是针对iis asp.net程序 ...

  8. HDU-4511 小明系列故事——女友的考验 floyd变种-标号递增最短路

    题意:给定N个点,现在要求出从1号点到N号点的最短路.题目给的限制条件就是对于某条路径是不能够走的,但是可以选择某段路径走,另外就是所走的路径的标号必须是递增的. 分析:由于给定的是一些列的坐标点,这 ...

  9. javascript学习-原生javascript的小特效(多个运动效果整理)

    以下代码就不详细解析了,在我之前的多个运动效果中已经解析好多次了,重复的地方这里就不说明了,有兴趣的童鞋可以去看看之前的文章<原生javascript的小特效> <!DOCTYPE ...

  10. Redis学习记录之————微博项目

    Key设计 全局相关的key: 表名 global 列名 操作 备注 Global:userid incr 产生全局的userid Global:postid Incr 产生全局的postid 用户相 ...