2010-09-04 42 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