Statement与PreparedStatement的区别 Statement与PreparedStatement的区别

Statement与PreparedStatement的区别

 

PreparedStatement预编译SQL语句,性能好。html

PreparedStatement无序拼接SQL语句,编程更简单.sql

PreparedStatement能够防止SQL注入,安全性好。数据库

 

 

Statement由方法createStatement()建立,该对象用于发送简单的静态的SQL语句。编程

PreparedStatement由方法preparedStatement()建立,该对象用于发送带有一个
或多个输入参数的SQL语句。该方法继承了Statement的全部方法。并进行了扩展。
SQL语句使用“?”做为数据占位符,使用setXxx()方法设置数据。安全

 setXxx()方法的第一个参数谁要设置参数的序数位置,第二个参数时设置给该参数的值。post

 

 

//Statement的用法
int id=111;
String sql="selsect * from user where id="+id;
Statement st=connection.CreateStatement();
ResultSet rs=st.executeQuery(sql);性能


//PreparedStatement的用法
//PreparedStatement可替换变量(在SQL语句中能够包含?)
String sql="select * from user where id=?";
PreparedStatement ps=connection.preparedStatement(sql);//sql在这里进行预编译
int id =111;
ps.setInt(1,id);//为sql传入参数
ResultSet rs=ps.executeQuery();//这里不须要sql,由于上面预编译过url

 

1.PreparedStatement是预编译的,对于批量处理能够大大提升效率. 也叫JDBC存储过程
 
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操做并不会带来额外的好处。
 
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得,   preparedstatement支持批处理
 
4.
Code Fragment 1:

String updateString = "UPDATE COFFEES SET SALES = 75 " + "WHERE COF_NAME LIKE ′Colombian′";
stmt.executeUpdate(updateString);

Code Fragment 2:

PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate();

片段2和片段1的区别在于,后者使用了PreparedStatement对象,而前者是普通的Statement对象。PreparedStatement对象不只包含了SQL语句,并且大多数状况下这个语句已经被预编译过,于是当其执行时,只需DBMS运行SQL语句,而没必要先编译。当你须要执行Statement对象屡次的时候,PreparedStatement对象将会大大下降运行时间,固然也加快了访问数据库的速度。
这种转换也给你带来很大的便利,没必要重复SQL语句的句法,而只需更改其中变量的值,即可从新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了屡次,并且两次之间的差异仅仅是变量的不一样。若是仅仅执行了一次的话,它应该和普通的对象毫无差别,体现不出它预编译的优越性。
 
5.执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。一般认为PreparedStatement对象比Statement对象更有效,特别是若是带有不一样参数的同一SQL语句被屡次执行的时候。PreparedStatement对象容许数据库预编译SQL语句,这样在随后的运行中能够节省时间并增长代码的可读性。
相关文章
相关标签/搜索