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

JDBC ResultSet får kolonner med tabelalias

JDBC vil blot navngive kolonnerne efter det, der er angivet i forespørgslen - den kender ikke til tabelnavne osv.

Du har to muligheder:

Mulighed 1: Navngiv kolonnerne anderledes i forespørgslen, dvs.

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

så referer i din java-kode til kolonnealiasserne:

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


Mulighed 2: Se kolonnen position i dit opkald til JDBC API:

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

Bemærk, at JDBC API bruger en-baseret indekser - dvs. de tæller fra 1 (ikke fra 0 ligesom java-indekser), så brug 1 for den første kolonne, 2 for anden kolonne osv.


Jeg vil anbefale mulighed 1, fordi det er mere sikkert at henvise til navngivne kolonner:Nogen ændrer muligvis rækkefølgen af ​​kolonnerne i forespørgslen, og det vil lydløst bryde din kode (du ville have adgang til den forkerte kolonne, men ville ikke vide det) , men hvis de ændrer kolonnenavnene, vil du i det mindste få en "no such column"-undtagelse ved kørsel.



  1. Oracle cursor til tildeling

  2. Flerrækket indsats med pg-løfte

  3. Sådan installeres SQLOPS på en Mac

  4. Hvad er en genereret kolonne?