2010-09-04 8 views
0

N'a pas trouvé dans docs.ResultSet en utilisant des arguments de requête comme dans jdbcTemplate

Est-ce que java ResultSet supporte les arguments de requête, comme jdbcTemplate?

Par exemple, quelque chose comme:

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

est-il possible?

Merci.

+1

ResultSet n'est pas censé interroger la base de données, alors pourquoi serait-il besoin d'arguments de la requête? –

+0

Je viens de trouver la méthode de jdbcTemplate queryForRowSet. Semble que ce dont j'ai besoin? parce que les valeurs renvoyées de mon SQL sont plus d'une ligne. – sergionni

+0

Vous utilisez 'Statement' pour déclencher une requête SQL, pas' ResultSet'. Le 'Statement' a une sous-classe qui fait exactement cela,' PreparedStatement'. Voir la réponse de Bozho pour les détails. – BalusC

Répondre

4

PreparedStatement permet paramètres (numérotés):

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

pstmt.setInt(1, desiredLength); 

ResultSet rs = pstmt.executeQuery(); 
+1

Voici un tutoriel: http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html – BalusC

+0

Bonjour, Bozho. Je suis intéressé par la valeur retournée - ce sera plusieurs lignes de la table DB, sélectionnées par un paramètre ID. – sergionni

+2

Parcourez simplement 'ResultSet' de la manière habituelle en utilisant' ResultSet # next() 'dans une boucle while. C'est aussi couvert dans l'un des chapitres du tutoriel ci-dessus. – BalusC