Statement用于执行不带参数的简单SQL语句,并返回它所生成结果的对象,每次执行SQL语句时,数据库都要编译该SQL语句。
PreparedStatement表示预编译的SQL语句对象,用于执行带参数的预编译SQL语句。
CallableStatement由prepareCall()方法所创建,提供了用来调用数据库中存储过程的接口,如果有输出参数要注册,说明是输出参数。
PreparedStatement和Statement对象能完成相同的功能,但是PreparedStatement具有以下优点:
(1)效率更高。在使用PreparedStatement对象执行SQL命令时,命令会被数据库进行编译和解析并放入命令缓冲区。然后每当执行同一个PreparedStatement对象时,由于在缓冲区中可以发现预编译的命令,可以重复使用,能提高系统性能。
(2)代码可读性和可维护性更好。
(3)安全性更好,使用PreparedStatement能够预防SQL注入攻击。