如何仅从 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 中获取第一行的主要内容,如果未能解决你的问题,请参考以下文章