Statement与PreparedStatement

Posted yanze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Statement与PreparedStatement相关的知识,希望对你有一定的参考价值。

Statement

用于通用查询,能批处理

 

PreparedStatement

用于执行参数化查询,能批处理

什么是参数化查询?

指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击的防御方式。

而且参数化有利于代码的可读性和可维护性

eg:

使用statement

stmt.executeUpdate(“insert into tb_name (col1,col2,col2,col4) values (‘”+var1+”’,’”+var2+”’,”+var3+”,’”+var4+”’)”);//stmt是Statement对象实例

使用PreparedStatement

perstmt = con.prepareStatement(“insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)”);
perstmt.setString(1,var1);
perstmt.setString(2,var2);
perstmt.setString(3,var3);
perstmt.setString(4,var4);
perstmt.executeUpdate(); //prestmt是 PreparedStatement 对象实例 

 

------------------------------------------------------------------------

 

什么时候用PreparedStatement?

多次请求推荐用PreparedStatement,数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,在多次请求的情况下它比Statement对象生成的查询速度更快

 

相对的,一次请求可用Statement

PreparedStatement的第一次执行消耗是很高的,假设我使用PreparedStatement的方式来执行一个针对Employee表的查询, JDBC驱动会先发送一个网络请求去解析数据、优化查询, 而当执行时会则会产生另一个网络请求。

如果使用Statement.,一个查询只会产生一次网络到数据库的通讯。

 



以上是关于Statement与PreparedStatement的主要内容,如果未能解决你的问题,请参考以下文章

JDBC-PreparedStatement实现CURD(笔记)

PreparedStatement 与 Statement 的区别

JDBC预编译statement(preparedstatement)和statement的比较execute与executeUpdate的区别

PreparedStatement 与 Statement

当 Statement 与 Java 和 Oracle 一起使用时,Prepared Statement 不起作用

Java基础——Statement与PrepareStatement