2010-09-04 25 views
0

在文档中找不到。ResultSet使用类似于jdbcTemplate中的查询参数

java结果集是否支持查询参数,如jdbcTemplate?

例如,像:

int length = 10; 
ResultSet rs = stmt.executeQuery("select MyTable.COLOR from MyTable where MyTable.LENGTH = ?", new Object[] { length }); 

这可能吗?

谢谢。

+1

的ResultSet是不应该来查询数据库,那么,为什么它需要的查询参数? – 2010-09-04 18:12:49

+0

我刚刚找到了jdbcTemplate queryForRowSet的方法。 似乎我需要什么?因为我的sql的返回值不止一行。 – sergionni 2010-09-04 18:15:50

+0

您使用'Statement'来触发SQL查询,而不是'ResultSet'。 'Statement'有一个子类,就是'PreparedStatement'。详见Bozho的答案。 – BalusC 2010-09-04 18:25:17

回答

4

PreparedStatement允许(编号)参数:

PreparedStatement pstmt = connection.prepareStatement(
     "select MyTable.COLOR from MyTable where MyTable.LENGTH=?"); 

pstmt.setInt(1, desiredLength); 

ResultSet rs = pstmt.executeQuery(); 
+1

这是一个教程:http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html – BalusC 2010-09-04 18:24:14

+0

嗨,Bozho。我对返回值感兴趣 - 这将是数据库表中的多行,由一个ID参数选择。 – sergionni 2010-09-04 18:24:36

+2

只需在'while'循环中使用'ResultSet#next()''循环ResultSet'即可。这也在上述教程的其中一章中介绍过。 – BalusC 2010-09-04 18:26:37