prepareStatement与Statement的区别

PrepareStatement与Statement的主要区别:
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 example:
 
 
statement:最常用的statement ,用于执行不含任何参数的SQL语句,提供对数据库的查询和更改操作。
preparedstatment:继承自Statement用于执行带参数的SQL语句,在参数固定的情况下推荐使用。 提供对数据库的查询和更改操作。
例如:/*  */这里中间的是注释
String sql="Select *from student where student_no=?";   /*sql语句*/
PrepareStatement st=con.prepareStatement(sql)  ;     /*创建statement*/
st.setString(1,no);     /*将参数设置到查询语句中 */
Result rs = st.executeQuery();  /*得到查询结果集*/                                       

CallableStatement:继承自PrepareStatement,一般用于调用数据库的存储过程的.
以上仅供参考 希望你喜欢


Java代码 复制代码  收藏代码
  1. package com.JDBC.proc;   
  2.   
  3. import java.sql.*;   
  4.   
  5. public class StatementTest {   
  6.     
  7.  public static void main(String args[]){   
  8.      
  9.   Connection conn=null;   
  10.   Statement stm=null;   
  11.   ResultSet rs=null;   
  12.      
  13.   try {   
  14.    conn=DBTool.getConnection();   
  15.    String sql="select EmpNo,EName from emp " +   
  16.      "where empNo=7499";   
  17.    stm=conn.createStatement();   
  18.    rs=stm.executeQuery(sql);   
  19.    while(rs.next()){   
  20.     System.out.println(rs.getInt(1)+"---"+rs.getString(2));   
  21.    }   
  22.   } catch (SQLException e) {   
  23.    e.printStackTrace();   
  24.   } catch (Exception e) {   
  25.   
  26.    e.printStackTrace();   
  27.   }finally{   
  28.    DBTool.release(rs, stm, conn);   
  29.    }   
  30.      
  31.  }   
  32.     
  33. }  
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);
   }
  
 }
 
}

PrepareStatement example:

   
Java代码 复制代码  收藏代码
  1. package com.JDBC.proc;      
  2.          
  3.     import java.sql.*;      
  4.   
  5.     public class PrepareStatement {      
  6.               
  7.         public static void main(String[] args){      
  8.                   
  9.             Connection conn=null;      
  10.             PreparedStatement psmt=null;      
  11.            ResultSet rs=null;      
  12.                  
  13.            try {      
  14.                conn=DBTool.getConnection();      
  15.                String sql="select EmpNo,Ename " +      
  16.                        "from emp " +      
  17.                        "where EmpNo=?";      
  18.                psmt=conn.prepareStatement(sql);      
  19.                psmt.setInt(17499);      
  20.                      
  21.                rs=psmt.executeQuery();      
  22.                while(rs.next()){      
  23.                   System.out.println(rs.getInt(1)+"---"+rs.getString(2));      
  24.                          
  25.                }      
  26.            } catch (SQLException e) {      
  27.                // TODO Auto-generated catch block     
  28.                e.printStackTrace();      
  29.            } catch (Exception e) {      
  30.                e.printStackTrace();      
  31.            }finally{      
  32.               DBTool.release(rs, psmt, conn);      
  33.            }      
  34.                  
  35.        }      
  36.         
  37.    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值