JDBC是一套标准(接口),用来连接关系型数据库。
JDBC提供了Statement、preparedStatement和CallableStatement三种方式来执行查询语句,其中Statement用于通用查询,preparedStatement用于执行参数化查询,而CallableStatement则是用于存储过程。
对于preparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于preparedStatement对象已于编译过所以器质性速度要快于Statement对象。
preparedStatement可以阻止常见的SQL注入攻击。
preparedStatement中,“?”叫做占位符,一个占位符只可以对应一个值。
Statement继承自Wrapper、preparedStatement继承自Statement、CallableStatement继承自PreparedStatement。
Statement:普通的不带参的查询SQL;支持批量更新,批量删除;
preparedStatement:可变参数的SQL,编译一次,执行多次,效率高;安全性好,有效防止SQL注入等问题,支持批量更新,批量删除;
CallableStatement:支持带参数的SQL操作,支持调用存储过程,提供了对输出和输入参数的支持;
Statement每次执行sql语句,数据库都要执行sql语句的编译 , 最好用于仅执行一次查询并返回结果的情形,效率高PreparedStatement。
PreparedStatement是预编译的,使用PreparedStat