0

我有一个包含多个连接的 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 在连接中找不到任何值,它会引发异常。

我希望这能让问题更清楚,我很抱歉一开始没有更多地扩展它。

4

1 回答 1

2

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

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

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

于 2012-06-11T19:07:08.310 回答