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. [SAP ABAP开发技术总结]预定义(内置)数据类型

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

  2. jQuery:show()方法

    show()方法是jQuery的方法,功能是显示元素,参数是时间,单位是毫秒,例如: Html: <div class="one" id="one"> ...

  3. s表达式和json表达式

    s表达式 + 1 2 3普通表达式 1+2+3json表达式{ +:[1, 2, 3]}优点,一个运算符,无限个参数 s表达式 * (+ 1 2) 3普通表达式 1+(2*3)json表达式{ *:[ ...

  4. 关于cmbiling.jar cocos2dx的问题

     CMBilling.jar是移动基地的支付库,这样的配置在eclipse下能编译通过,可是用cocos compile命令却找不到这个库及相应的接口函数,移动有个特殊要求,它不允许CMBilling ...

  5. MongoDB入门教程之C#驱动操作实例

    实体类: using MongoDB.Bson; namespace WindowsFormsApp { class User { //public ObjectId _id; //BsonType. ...

  6. ORACLE SQL 分组

    select max(cost),suppliercode from tel_bill where period = '2014005' group by suppliercode;select * ...

  7. Movie

    情书   av1300192最完美的离婚  av1304160梦旅人 av1126580NANA真人版电影  av1608482为了N  av1815256恋爱写真  av710199笃姬  搜狐天皇 ...

  8. Codeforces 731F Video Cards

    题意:给定n个数字,你可以从中选出一个数A(不能对该数进行修改操作),并对其它数减小至该数的倍数,统计总和.问总和最大是多少? 题解:排序后枚举每个数作为选出的数A,再枚举其他数, sum += a[ ...

  9. 学习日记day9: PC端页面流程优化

    <!DOCTYPE html><html lang="en"><head> <meta charset="gb2312" ...

  10. CentOS下源码安装MySQL

    一.创建mysql用户与组,相关目录 useradd mysql -s /sbin/nologin mkdir /usr/local/mysql chown -R mysql.mysql mkdir ...