Oracle
 sql >> Database >  >> RDS >> Oracle

JDBC ResultSet ottiene colonne con alias tabella

JDBC nominerà semplicemente le colonne in base a ciò che è specificato nella query:non conosce i nomi delle tabelle, ecc.

Hai due opzioni:

Opzione 1: Assegna un nome diverso alle colonne nella query, ad esempio

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

quindi nel tuo codice java fai riferimento agli alias di colonna:

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


Opzione 2: Fare riferimento alla colonna posizione nella tua chiamata all'API JDBC:

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

Tieni presente che l'API JDBC utilizza one-based indici, ovvero contano da 1 (non da 0 come gli indici java), quindi usa 1 per la prima colonna, 2 per la seconda colonna, ecc


Raccomanderei l'opzione 1, perché è più sicuro fare riferimento a colonne con nome:qualcuno potrebbe cambiare l'ordine delle colonne nella query e interromperebbe silenziosamente il tuo codice (avresti accesso alla colonna sbagliata ma non lo sapresti) , ma se cambiano i nomi delle colonne, otterrai almeno un'eccezione "nessuna colonna" in fase di esecuzione.