sql >> Database >  >> RDS >> Oracle

JDBC ResultSet krijg kolommen met tabelalias

JDBC zal de kolommen gewoon een naam geven op basis van wat is gespecificeerd in de query - het weet niets van tabelnamen enz.

Je hebt twee opties:

Optie 1: Geef de kolommen een andere naam in de zoekopdracht, bijv.

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

verwijs dan in uw java-code naar de kolom aliassen:

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


Optie 2: Raadpleeg de kolom positie in uw aanroep naar de JDBC API:

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

Merk op dat de JDBC API one-based . gebruikt indexen - dwz ze tellen vanaf 1 (niet van 0 zoals java-indexen), dus gebruik 1 voor de eerste kolom, 2 voor de tweede kolom, enz.


Ik zou optie 1 aanbevelen, omdat het veiliger is om naar benoemde kolommen te verwijzen:iemand kan de volgorde van de kolommen in de zoekopdracht wijzigen en het zou je code in stilte breken (je zou de verkeerde kolom openen, maar zou het niet weten) , maar als ze de kolomnamen wijzigen, krijgt u tijdens runtime op zijn minst een "no such column"-uitzondering.



  1. Retourneer de parameters van een opgeslagen procedure of door de gebruiker gedefinieerde functie in SQL Server (T-SQL-voorbeelden)

  2. 3 manieren om het aantal systeemtabellen in een SQL Server-database te tellen

  3. PostgreSQL-ROLE (gebruiker) maken als deze niet bestaat

  4. Hoe krijg ik het huidige jaar met SQL op Oracle?