sql >> Base de Datos >  >> RDS >> Oracle

JDBC ResultSet obtiene columnas con alias de tabla

JDBC simplemente nombrará las columnas por lo que se especifica en la consulta; no conoce los nombres de las tablas, etc.

Tienes dos opciones:

Opción 1: Nombra las columnas de manera diferente en la consulta, es decir,

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

luego, en su código Java, consulte los alias de columna:

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


Opción 2: Consulte la columna posición en su llamada a la API de JDBC:

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

Tenga en cuenta que la API de JDBC utiliza basado en uno índices - es decir, cuentan desde 1 (no de 0 como los índices de Java), así que usa 1 para la primera columna, 2 para la segunda columna, etc


Recomendaría la opción 1, porque es más seguro hacer referencia a columnas con nombre:alguien puede cambiar el orden de las columnas en la consulta y rompería silenciosamente su código (estaría accediendo a la columna incorrecta pero no lo sabría) , pero si cambian los nombres de las columnas, al menos obtendrá una excepción de "no existe tal columna" en el tiempo de ejecución.