位置:首页 > Java > PreparedStatement接口作用与用法详解

PreparedStatement接口作用与用法详解

时间:2026-08-16  |  作者:游戏探长  |  阅读:0

Statement接口对JDBC执行SQL语句这件事做了基础封装,拿来让Ja va程序跑SQL当然没问题。但真正到了实际开发里,SQL里往往要带上程序中的变量作为查询条件。

这时候如果还用Statement来处理,不仅写起来麻烦,代码也容易变得又长又乱,更关键的是还会带来安全隐患。

也正因为如此,JDBC API进一步提供了功能更完善的PreparedStatement接口,专门用来解决这类问题。

PreparedStatement接口

PreparedStatement接口的基本概念

PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。

该接口扩展了带有参数SQL语句的执行操作。应用接口中的SQL语句可以使用占位符“”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。

PreparedStatement接口中的常用方法

在PreparedStatement接口中,提供了一些常用方法,具体如表1所示。

表1 PreparedStatement 接口中的常用方法

方法声明 功能描述
int executeUpdate() 在此PreparedStatement对象中执行 SQL 语句,该语句必须是一个DML语句或者是无返回内容的SQL 语句,如 DDL 语句
ResultSet executeQuery() 在此PreparedStatement对象中执行 SQL 查询,该方法返回的是ResultSet对象
void setInt(int parameterIndex, int x) 将指定参数设置为给定的int值
void setFloat(int parameterIndex, float x) 将指定参数设置为给定的float值
void setString(int parameterIndex, String x) 将指定参数设置为给定的String值
void setDate(int parameterIndex, Date x) 将指定参数设置为给定的Date值
void addBatch() 将一组参数添加到此PreparedStatement对象的批处理命令中
void setCharacterStream(int parameterIndex, ja va.io.Reader reader, int length) 将指定的输入流写入数据库的文本字段
void setBinaryStream(int parameterIndex, ja va.io.InputStream x, int length) 将二进制的输入流数据写入到二进制字段中

使用时需要注意的问题

需要注意的是,表9-4中的setDate()方法可以设置日期内容,但参数Date的类型必须是ja va.sql.Date,而不是ja va.util.Date。

参数赋值方式说明

给 SQL 语句里的参数赋值时,通常要优先选择与 SQL 类型对应的 setXxx() 方法。

  • 字段类型如果是 int 或 Integer,就应该使用 setInt()。
  • 如果希望用更通用的方式处理不同类型的参数,也可以直接使用 setObject() 来完成设置。

具体如下所示:

// 假设users表中字段id、name、email类型分别是int、varchar、varchar
String sql = "INSERT INTO users(id,name,email) VALUES(,,)";
PreparedStatement  preStmt = conn.prepareStatement(sql);
preStmt.setInt(1, 1);                    //使用参数与SQL类型相匹配的方法
preStmt.setString(2, "zhangsan");      //使用参数与SQL类型相匹配的方法
preStmt.setObject(3, "zs@sina.com");  //使用setObject()方法设置参数
preStmt.executeUpdate();

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多