PreparedStatement接口,prepareStatement方法

1、public interface PreparedStatementextends Statement

表示预编译的 SQL 语句的对象。 
SQL 语句被预编译并且存储在 PreparedStatement 对象中。然后可以使用此对象高效地多次执行该语句。 
注:用来设置 IN 参数值的 setter 方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。
例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法。 
如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数的类型。 
在以下设置参数的示例中,con 表示一个活动连接: 
使用实例:

   PreparedStatement pstmt  =  con.prepareStatement( " UPDATE EMPLOYEES
                                     SET SALARY  =   ?  WHERE ID  =   ? " );
   pstmt.setBigDecimal( 1 153833.00 ) // 将153833.00赋给第一个参数
   pstmt.setInt( 2 110592 ) // 将110592赋给第二个参数

2、setBigDecimal(int parameterIndex, BigDecimal x) 
          将指定参数设置为给定 java.math.BigDecimal 值。

3、setInt(int parameterIndex, int x) 
          将指定参数设置为给定 Java int 值。

4、prepareStatement
PreparedStatement prepareStatement(String sql)
                                   throws SQLException

创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。 
带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编译并存储在 PreparedStatement 对象中。
然后可以有效地使用此对象来多次执行该语句。 
注:为了处理受益于预编译的带参数 SQL 语句,此方法进行了优化。如果驱动程序支持预编译,
则 prepareStatement 方法会将该语句发送给数据库进行预编译。一些驱动程序可能不支持预编译。
在这种情况下,执行 PreparedStatement 对象之前无法将语句发送给数据库。这对用户没有直接的影响;
但它的确会影响抛出某些 SQLException 对象的方法。 使用返回的 PreparedStatement 对象创建的结果集
在默认情况下类型为 TYPE_FORWARD_ONLY,并带有 CONCUR_READ_ONLY 并发级别。 
参数:
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句 
返回:
包含预编译的 SQL 语句的新的默认 PreparedStatement 对象

prepareStatement可以替换变量 
在SQL语句中可以包含
? ,可以用ps = conn.prepareStatement( " select * from Cust where ID=? " ); 
int  sid = 1001
ps.setInt(
1 , sid); 
rs 
=  ps.executeQuery(); 
可以把
? 替换成变量。 
而Statement只能用 
int  sid = 1001
Statement stmt 
=  conn.createStatement(); 
ResultSet rs 
=  stmt.executeQuery( " select * from Cust where ID= " + sid); 
来实现

5、prepareStatement
PreparedStatement prepareStatement(String sql,
                                   int resultSetType,
                                   int resultSetConcurrency)
                                   throws SQLException

创建一个 PreparedStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象。
此方法与上述 prepareStatement 方法相同,但它允许重写默认结果集类型和并发性。 
参数:
sql - 一个 String 对象,它是将被发送到数据库的 SQL 语句,可以包含一个或多个 ? IN 参数
resultSetType - 结果集类型,它是 ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE
或 ResultSet.TYPE_SCROLL_SENSITIVE 之一resultSetConcurrency - 并发类型,
它是 ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE 之一 
返回:
包含预编译的 SQL 语句的新 PreparedStatement 对象,该对象将生成具有给定类型和并发性的 ResultSet 对象

猜你喜欢

转载自blog.csdn.net/coding_1994/article/details/80372239
今日推荐