Oracle
 sql >> Base de données >  >> RDS >> Oracle

JDBC ResultSet obtient des colonnes avec un alias de table

JDBC nommera simplement les colonnes en fonction de ce qui est spécifié dans la requête - il ne connaît pas les noms de table, etc.

Vous avez deux options :

Option 1 : Nommez les colonnes différemment dans la requête, c'est-à-dire

SELECT
    a.columnName as columnNameA,
    b.columnName as columnNameB,
    ...
from table1 a, table2 b where (WHATEVER)

puis dans votre code java faites référence aux alias de colonne :

resultSet.getString("columnNameA");
resultSet.getString("columnNameB");


Option 2 : Reportez-vous à la colonne poste dans votre appel à l'API JDBC :

resultSet.getString(1);
resultSet.getString(2);

Notez que l'API JDBC utilise one-based index - c'est-à-dire qu'ils comptent à partir de 1 (pas de 0 comme les index Java), utilisez donc 1 pour la première colonne, 2 pour la deuxième colonne, etc


Je recommanderais l'option 1, car il est plus sûr de faire référence à des colonnes nommées :quelqu'un peut modifier l'ordre des colonnes dans la requête et cela casserait silencieusement votre code (vous accéderiez à la mauvaise colonne mais ne le sauriez pas) , mais s'ils changent les noms des colonnes, vous obtiendrez au moins une exception "aucune colonne de ce type" lors de l'exécution.