当前位置:

Statement和PreparedStatement的区别

机器助手 |  2025-07-13
 100人浏览

什么是Statement

Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。

操作数据库具体步骤

  1. 首先导入java.sql.*;这个包。
  2. 然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn。
  3. 然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn.creatStatement("SQL语句字符串");

Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL语句的包容器。

三种Statement对象

  1. Statement:Statement 对象用于执行不带参数的简单 SQL 语句。
  2. PreparedStatement:它从 Statement 继承而来。PreparedStatement 对象用于执行带或不带参数的预编译 SQL 语句。
  3. CallableStatement:它从 PreparedStatement 继承而来。CallableStatement 对象用于执行对数据库已存储过程的调用。

它们都专用于发送特定类型的 SQL 语句。

总结

Statement每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement,但存在sql注入风险。

PreparedStatement是预编译执行的。在执行可变参数的一条SQL时,PreparedStatement要比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率高。安全性更好,有效防止SQL注入的问题。

对于多次重复执行的语句,使用PreparedStatement效率会更高一点。执行SQL语句是可以带参数的,并支持批量执行SQL。由于采用了Cache机制,则预编译的语句,就会放在Cache中,下次执行相同的SQL语句时,则可以直接从Cache中取出来。

文章评论