Impossible de trouver un moyen d'obtenir une chaîne de la table à l'aide de la requête JdbcTemplate. Voici la table que mon sql retourne:
ID | STREET_NAME
------------------------
1 | Elm street
Maintenant, comment suis-je censé obtenir la valeur de STREET_NAME. SQL renvoie toujours une ligne, vous n'avez donc pas à vous soucier de renvoyer plus d'une ligne.
Pour quelques informations de fond: INNER JOIN et COUNT dans la même requête
Utiliser la réponse de Tony Stark pour obtenir ma table.
Mais comment puis-je en extraire "Elm street" à l'aide de JdbcTemplate?
Il serait très utile de savoir à quoi ressemble votre requête SQL, mais en supposant que c'est quelque chose comme SELECT ID,STREET_NAME FROM table WHERE ID=1;
CODE:
public String getStreetNameById(int id) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT ID,STREET_NAME FROM table WHERE ID=?";
String streetName = (String) jdbcTemplate.queryForObject(
sql, new Object[] { id }, String.class);
return streetName;
}
Si vous voulez obtenir une seule "chaîne" de colonne de votre table (ou toute requête avec jointures), vous devez dire le nom de la colonne.
Utiliser SELECT * FROM TABLE est d'ailleurs une très très mauvaise pratique. Je parie que tu as fait ça.
@JLewkovich code modifié:
public String getStreetNameById(int id) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
String sql = "SELECT STREET_NAME FROM table WHERE ID=?";
String streetName = (String) jdbcTemplate.queryForObject(
sql, new Object[] { id }, String.class);
return streetName;
}
Mais que faire s'il y a 0 ou plusieurs résultats? Pensez-y!
Mais pour obtenir une valeur de séquence (dans Oracle), cela devrait fonctionner.
public Long getSequence() {
Long seq;
String sql = "select SEQ_XY.NEXTVAL from dual";
seq = jdbcTemplateObject.queryForObject(sql, new Object[] {}, Long.class);
return seq;
}