确定JOIN是否产生任何列

时间:2012-06-11 18:04:17

标签: java sql jdbc

我有一个带有多个连接的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在连接中没有找到任何值,则抛出异常。

我希望这会使问题更加明确,我很抱歉没有在第一时间对其进行更多扩展。

1 个答案:

答案 0 :(得分:2)

查询不会返回具有此类名称的列。它只会使用列的简单名称(namekeyField等)。在数据库查询工具中执行查询,您将看到为检索到的列分配了哪些名称。

您永远不应该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");
...

此外,抛出的异常包含一条消息,它可以帮助您识别问题。阅读。如果您不理解,请发布它。