我是靠谱客的博主 迷你雪碧,最近开发中收集的这篇文章主要介绍MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法判断查询结果是否为空获取查询结果的行数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

判断查询结果是否为空

在JDBC中没有方法hasNext去判断是否有下一条数据,但是我们可以使用next方法来代替。
看next方法的官方解释:
    
  • boolean next()
    throws 
    Moves the cursor forward one row from its current position. A  ResultSet cursor is initially positioned before the first row; the first call to the method  next makes the first row the current row; the second call makes the second row the current row, and so on.

    When a call to the next method returns false, the cursor is positioned after the last row. Any invocation of a ResultSet method which requires a current row will result in a SQLException being thrown. If the result set type is TYPE_FORWARD_ONLY, it is vendor specified whether their JDBC driver implementation will return false or throw an SQLException on a subsequent call to next.

    If an input stream is open for the current row, a call to the method next will implicitly close it. A ResultSet object's warning chain is cleared when a new row is read.

    Returns:
    true if the new current row is valid;  false if there are no more rows
    Throws:
    SQLException - if a database access error occurs or this method is called on a closed result set

翻译如下:
    boolean next() throws  SQLException
        将当前行从上一行移到下一行。一个  ResultSet的当前行最初指向第一行查询结果前。当第一次调用next的时候,当前行将会指向第一行查询结果。第二次调用就会指向第二行查询结果,等等。
    当调用next方法返回false的时候,当前行当前行指向最后一行查询结果之后。这时候,任何ResultSet 的请求当前行的方法调用都会导致SQLException 被抛出。但如果查询的结果设置为TYPE_FORWARD_ONLY,next方法在这时候根据实现厂商的不同,可能会返回false也坑能会抛出SQLException 异常
 的警告将会被清楚。

关于的next的开始和结束,可以用下面的图来解释:
    0->1->2->3->4->0                中间的1, 2, 3, 4是查询结果
    ^                           ^
开始                          结束

判断JDBC查询结果是否为空的正确姿势:
Statement statement = conn.createStatement();
ResultSet res = statement.executeQuery(selectSql);
if (!res.next()) {
//res is null
} else {
// res is not null
}

获取查询结果的行数

JDBC并没有直接提供获取查询结果总行数的方法给我们调用,为此我们需要使用间接的手段来执行:

第一种方法:
ResultSet res = ...使用某种方法获取查询结果
int nRow = 0;
while(res.next()) {
++nRow;
}
res.beforeFirst();
// 其他代码不变

第二种方法:
ResultSet res = ...使用某种方法获取查询结果
res.last();
final int nRow = res.getRow();
res.beforeFirst();
// 其他代码不变

最后

以上就是迷你雪碧为你收集整理的MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法判断查询结果是否为空获取查询结果的行数的全部内容,希望文章能够帮你解决MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法判断查询结果是否为空获取查询结果的行数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部