【问题标题】:How to get only the first row from a ResultSet如何仅从 ResultSet 中获取第一行
【发布时间】:2011-08-13 15:08:05
【问题描述】:

如何仅从ResultSet 中获取第一行?我知道如何遍历整个集合,但如何只获得第一行?

【问题讨论】:

  • 只是不要迭代。删除迭代循环。如果您不需要所有行,最好改进您的查询以返回 1 行
  • 只需在查询中添加 LIMIT 即可?

标签: java mysql jdbc


【解决方案1】:

不要调用resultSet.next();简单提取数据,

ResultSet 对象维护一个指向其当前数据行的游标。最初,光标位于第一行之前。 next 方法将光标移动到下一行,并且由于在 ResultSet 对象中没有更多行时返回 false,因此可以在 while 循环中使用它来遍历结果集。

或者您也可以拨打first()

将光标移动到此 ResultSet 对象的第一行。


【讨论】:

  • 您不能只省略对ResultSet.next(). 的调用。默认情况下,它位于第一行之前。 ResultSet.first() 不是“替代品”。
  • @EJP 为什么不呢?
【解决方案2】:

不要遍历结果集,只需检查是否存在条目并读取它:

ResultSet r = ...;
if(r.next()) {
  String s = r.getString(1);
  ...
}

【讨论】:

    【解决方案3】:

    在我的情况下,以下方法效果很好:

    ResultSet RSet  = ...;
    RSet.next();
    Integer TestType = RSet.getInt("Type");
    

    【讨论】:

      【解决方案4】:

      您可以使用absolute 导航到第一行:

      ResultSet rs = ...;
      rs.absolute(1); // Navigate to first row
      int id = rs.getInt("id");
      ...
      

      【讨论】:

        【解决方案5】:
        //Code to get first row or first field of multiple rows
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //Establish connection
        con = DriverManager.getConnection(sConnString, sUserName, sPassword);
        //Create statement.
        statement = con.createStatement();
        sQueryToExecute = "select field_Name from Table_Name where condition order by desc";
        System.out.println(sQueryToExecute);
        ResultSet rs = statement.executeQuery(sQueryToExecute);
        while(rs.next())
        {
            stringToStoreValue = rs.getString(1);
            break;
        }
        

        【讨论】:

          【解决方案6】:

          对于那些寻求 Sqlite - Android 答案的人,这是我的方法。

           if(RS.moveToNext()){
               String s = RS.getString(1);
               ... 
           }
          

          【讨论】:

            猜你喜欢
            • 2013-06-27
            • 1970-01-01
            • 2016-03-14
            • 2018-07-19
            • 1970-01-01
            • 1970-01-01
            • 2014-06-25
            • 2018-06-11
            • 2011-02-06
            相关资源
            最近更新 更多