如何仅从 ResultSet 中获取第一行

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

或者您也可以拨打first()

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


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);
     ... 
 

【讨论】:

以上是关于如何仅从 ResultSet 中获取第一行的主要内容,如果未能解决你的问题,请参考以下文章

JDBC——ResultSet结果集对象

查找 ResultSet 列数? [复制]

如何仅从视频文件中获取第一个隐藏式字幕?

仅从另一个联接表中选择第一行

仅从组中选择第一行的 SQL 模式

如何仅从 React 中的 API 获取第一个数据?