JDBC ResultSet获取具有表别名的列
假设我有一个类似的查询
SELECT * from table1 a, table2 b where (WHATEVER)
也许两个表都具有相同的列名。所以我虽然很高兴通过访问数据
resultSet.getString("a.columnName");resultSet.getString("b.columnName");
但这事与愿违,我一无所获。我阅读了API,但是他们并没有真正谈论这种情况。这样的功能供应商依赖吗?
回答:
JDBC将仅通过查询中指定的名称来命名列-它不知道表名等。
您有两种选择:
在查询中使用不同的名称命名列,即
SELECT a.columnName as columnNameA,
b.columnName as columnNameB,
...
from table1 a, table2 b where (WHATEVER)
然后在您的Java代码中参考列别名:
resultSet.getString("columnNameA");resultSet.getString("columnNameB");
在对JDBC API的调用中,参考列的 位置 :
resultSet.getString(1);resultSet.getString(2);
请注意,JDBC API使用 基于 索引的索引-即它们从1
(而不是0
像Java索引一样)计数,因此1
用于第一列,2
第二列等。
我建议使用选项1,因为引用命名的列更安全:有人可以更改查询中列的顺序,这会无声地破坏您的代码(您将访问错误的列,但不知道),但是如果它们更改列名,您至少会在运行时收到“无此列”异常。
以上是 JDBC ResultSet获取具有表别名的列 的全部内容, 来源链接: utcz.com/qa/420522.html