MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法_MySQL_MySQL_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • MySQL

    当前位置:主页 > 数据库 > MySQL >

    MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法_MySQL

    时间:2019-11-09|栏目:MySQL|点击:
  • 判断查询结果是否为空 在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学习总结(17)MySQL数据库表设计优化_MySQL

    栏    目:MySQL

    下一篇:MySQL最新版5.7.12安装教程(windows)_MySQL

    本文标题:MySQL的JDBC判断查询结果是否为空以及获取查询结果行数的方法_MySQL

    本文地址:http://www.jh-floor.com/shujuku/MySQL/123582.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号