web-dev-qa-db-fra.com

Utilisation de Spring JdbcTemplate pour extraire une chaîne

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?

12
lkallas

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;
}
28
JLewkovich

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;
}
4
Laszlo Lugosi