【问题标题】:Is it possible to tell if a java ResultSet is empty without affecting the record?是否可以在不影响记录的情况下判断 java ResultSet 是否为空?
【发布时间】:2011-08-18 09:06:35
【问题描述】:

我不想使用 next(),因为如果 ResultSet 不为空,我不想让光标前进。如果 ResultSet 为空,是否有某种 peek() 方法或等效方法返回 false,否则返回 true 而不会影响记录?

编辑:

我无法致电beforeFirst,因为我收到以下信息

操作需要一个可滚动的 ResultSet,但是这个 ResultSet 是 FORWARD_ONLY

我需要 FORWARD_ONLY,因为我使用的是 postgreSQL 游标

【问题讨论】:

  • 为什么不能创建滚动不敏感ResultSet?只需要Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE);
  • @SanjayT.Sharma 该语句将失败,因为您还需要提供其并发模型:Statement query = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

标签: java


【解决方案1】:

您可以调用first() 方法来检查ResultSet 中是否有结果。如果first() 返回true,则可以调用beforeFirst() 重置ResultSet 光标位置。

【讨论】:

  • 这就是我正在做的事情,并且在那里我得到了Operation requires a scrollable ResultSet, but this ResultSet is FORWARD_ONLY 异常
【解决方案2】:

isBeforeFirst() 如果光标位于第一行之前,则返回 true;如果光标位于任何其他位置或结果集为空,则返回 false

查看Java API for ResultSet for isBeforeFirst()

【讨论】:

    【解决方案3】:
       getFetchSize()
    

    根据返回的大小,您可以继续...

    【讨论】:

    • 获取大小与结果集的大小无关,另外,如果您的目的是获取结果的大小并在没有结果的情况下停止进一步处理,您也可以解释一下.
    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 2017-01-06
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多