我有一个带有多个连接的sql语句;有时有连接产生的记录,有时则没有。当连接为空时,这不是错误。
是否有一种方法可以测试特定联接是否为空,而不必捕获在结果集中未找到结果列时发生的异常?
换句话说,如果使用 JDBC,我执行以下 sql 语句:
select * from AA left outer join BB on AA.keyField = BB.keyField
where keyField = "123"
我想知道该连接是否找到任何字段而不必捕获异常。如果我然后执行java语句:
String valueString = rs.getString("BB.keyField");
我遇到异常。我无法将 rs.getString("BB.keyField") 与 null 进行比较,因为如果 getString 在连接中没有找到任何值,则会引发异常。
我希望这能让问题更清楚,并且我很抱歉首先没有对其进行更多扩展。
最佳答案
查询不会返回具有此类名称的列。它只会使用列的简单名称(name
、keyField
等)。在数据库查询工具中执行查询,您将看到为检索到的列分配了哪些名称。
您永远不应该执行select *
,而应始终选择特定列。如果两列具有相同的名称,则应该为列分配别名:
select AA.id as aId, AA.name as aName, BB.id as bId, BB.name as bName from ...
然后,您就可以安全地使用
rs.getString("aId");
rs.getString("bName");
...
此外,抛出的异常包含一条消息,这应该可以帮助您识别问题。阅读。如果您不明白,请发布。
关于java - 确定 JOIN 是否产生任何列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985228/