当前位置:
Statement和PreparedStatement的区别
机器助手 | 2025-07-13
100人浏览
什么是Statement
Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。
操作数据库具体步骤
- 首先导入java.sql.*;这个包。
- 然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn。
- 然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn.creatStatement("SQL语句字符串");
Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL语句的包容器。
三种Statement对象
- Statement:Statement 对象用于执行不带参数的简单 SQL 语句。
- PreparedStatement:它从 Statement 继承而来。PreparedStatement 对象用于执行带或不带参数的预编译 SQL 语句。
- CallableStatement:它从 PreparedStatement 继承而来。CallableStatement 对象用于执行对数据库已存储过程的调用。
它们都专用于发送特定类型的 SQL 语句。
总结
Statement每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement,但存在sql注入风险。
PreparedStatement是预编译执行的。在执行可变参数的一条SQL时,PreparedStatement要比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率高。安全性更好,有效防止SQL注入的问题。
对于多次重复执行的语句,使用PreparedStatement效率会更高一点。执行SQL语句是可以带参数的,并支持批量执行SQL。由于采用了Cache机制,则预编译的语句,就会放在Cache中,下次执行相同的SQL语句时,则可以直接从Cache中取出来。
