在Oracle JDBC访问中加入Spring特性
2007-05-10 12:20:43 来源:WEB开发网核心提示: 将 PreparedStatement 用于 Spring代码清单 3 中的 Spring 示例依靠 Spring 的 Statement 包装来执行 SQL 语句,然而,在Oracle JDBC访问中加入Spring特性(10),通常推荐使用 PreparedStatement 而不是
将 PreparedStatement 用于 Spring
代码清单 3 中的 Spring 示例依靠 Spring 的 Statement 包装来执行 SQL 语句。然而,通常推荐使用 PreparedStatement 而不是 Statement 来对数据库执行 SQL 语句。Spring JdbcTemplate 类为许多方法提供了在 Statement 和 PreparedStatement 两者上构建的相同的功能,这样便于您按需选择 JDBC 语句的底层类型。
Spring 的基于 Javadoc 的 API 文档详细说明了各个方法是使用 Statement 还是 PreparedStatement。您还可以根据是否和 SQL 字符串一起传递了 SQL 参数给方法来分辨 JdbcTemplate 使用了哪一种类型。如果只传入了 SQL 字符串,那么方法一般使用 Statement。如果方法接收了 SQL 字符串的参数以及 SQL 语句,那么方法一般使用 PreparedStatement。下面的两个代码清单(代码清单 5 和代码清单 6)显示了使用 PreparedStatement 的标准 JDBC 访问和包装 PreparedStatement 的基于 Spring 的访问。
代码清单 5
String updateStr ="UPDATE salgrade SET losal = ?,
hisal = ?WHERE grade = ?";PreparedStatement stmt = null;
try{stmt = this.myConnection.prepareStatement(updateStr);
stmt.setInt(1,aLowSal);stmt.setInt(2,aHighSal);
stmt.setInt(3,aSalGrade);
updateStatus = stmt.execute();stmt.close();}
// lots of catch and finally code typically
follows here
代码清单 6
String updateStr ="UPDATE salgrade SET losal = ?,
hisal = ?WHERE grade = ?";
JdbcTemplate jt = new JdbcTemplate(this.myDataSource);
jt.update( updateStr,new Object[]
{ new Integer(aLowSal),
new Integer(aHighSal),new Integer(aSalGrade) } );
// No handling/closing of PreparedStatement or catch/finally needed
[]
更多精彩
赞助商链接