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. oracle命令识记

    连接数据库 sqlplus /nolog; conn / as sysdba; set ORACLE_SID=实例名; 查看表结构命令 select table_name from user_tabl ...

  2. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  3. CUBRID学习笔记 30 复制表结构 cubrid教程

    语法 CREATE {TABLE | CLASS} <new_table_name> LIKE <old_table_name> 如下 CREATE TABLE a_tbl( ...

  4. kakfa的常用命令总结

    Kafka的版本间差异较大,下面是0.8.2.1的操作方法 首先cd到kafaka的bin目录下;   #step1启动zookeeper服务 nohup bin/zookeeper-server-s ...

  5. Jquery动画方法 jquery.animate()

    目前在学习Oracle数据库,由于刚接触,学校让练习练习HTML内容,就想起了老师以前提起过的animate方法 animate是jquery的一个方法,这个方法主要功能是能实现比较平滑的动态效果,所 ...

  6. iOS - KVO 键值观察

    1.KVO KVO 是 Key-Value Observing 的简写,是键值观察的意思,属于 runtime 方法.Key Value Observing 顾名思义就是一种 observer 模式用 ...

  7. SAP 关于标准成本、计划成本、目标成本、实际成本

    SAP 关于标准成本.计划成本.目标成本.实际成本 <A style="MARGIN-RIGHT: 10px" target=_blank data-ext="{v ...

  8. 老笔记本_Win7_U盘_ReadyBoost

    老笔记本 Win7 U盘 ReadyBoost 值得尝试

  9. [转载] HTTP请求的TCP瓶颈分析

    原文: http://bhsc881114.github.io/2015/06/23/HTTP%E8%AF%B7%E6%B1%82%E7%9A%84TCP%E7%93%B6%E9%A2%88%E5%8 ...

  10. parseInt 的第二个参数

    ["1","2","3"].map(parseInt) //[1,NaN,NaN] ["1","2" ...