JDBC将根据查询中指定的内容简单地命名列 – 它不知道表名等。
您有两个选项:
选项1:在查询中对列进行不同的命名,即
SELECT
a.columnName as columnNameA,
b.columnName as columnNameB,
...
from table1 a, table2 b where (WHATEVER)
那么在你的java代码中引用列别名:
resultSet.getString("columnNameA");
resultSet.getString("columnNameB");
选项2:请参阅调用JDBC API的列位置:
resultSet.getString(1);
resultSet.getString(2);
注意,JDBC API使用基于1的索引 – 即它们从1开始计数(而不是从0开始像java索引),因此对第一列使用1,对第二列使用2等。
我会推荐选项1,因为引用命名列更安全:有人可能会更改查询中的列的顺序,它会默默打破你的代码(你会访问错误的列,但不知道),但如果他们更改列名称,您将至少在运行时获取“无此列”异常。