后面测试题有一题不是很明白...

后面测试题有一题不是很明白...

执行select count(*) from emp;这条SQL语句,如果员工表中没有任何数据,

那不应该返回一个0吗,因为count(*)就是数据的数量。

为什么ResultSet会没有数据呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2021-05-11 16:11:07

同学你好,根据同学的描述,这里的0这个数据是可以获取到的,不过它并不是有效数据,也就是说它并不是一条一条式的数据,如:id=1,name=张三,id=2,name=王五这样的。

在生活中,我们根据证件号码查询某个人或证明时,如果返回的不是这个人的信息或者证明的信息时,此时,我们可以认为,它返回的不是一个有效信息,那么就可以认为它是一个无效数据。

count(*)结果为0,其实就表示数据库中没有查询到对应的有效数据。

祝学习愉快!

好帮手慕小班 2021-05-10 17:08:15

同学你好,当员工表中没有数据,执行select count(*) from emp; 返回值是0,那就是没有符合条件的数据,所以对应返回值并没有对应的数据。

另外,问一下同学是哪个测试题目,还麻烦同学具体描述一下,便于老师测试代码定位问题。

祝学习愉快!

  • 提问者 fever腾腾 #1

    http://img1.sycdn.imooc.com//climg/6099d98109f0351a18770557.jpg

    就这一题,因为单从sql语句 select count(*) from emp 查询出来的结果应该就是0,那ResultSet里面不应该有一个0的数据嘛?


    2021-05-11 09:11:52
  • 好帮手慕小班 回复 提问者 fever腾腾 #2

    同学你好,ResultSet为空和ResultSet中没有元素是两个概念,就像List<String> list =new ArrayList<String>();

        ​这个语句中,list肯定不是null,但是list没有元素。同理ResultSet即使是没有查询结果,这个集合也不会是空的,只是ResultSet中的元素为空,可以通过判断rs.next()来确认ResultSet中是否有元素 。

        ​ select count(*) from emp 查询出来的结果是0,那就是没有符合条件的数据,对应ResultSet接收查询结果也就是没有符合条件的数据,元素为空。

    祝学习愉快!

    2021-05-11 10:48:03
  • 提问者 fever腾腾 回复 好帮手慕小班 #3

    唔,不知道是我理解问题还是题目表达有问题。我的理解的这个题目是,用

    ResultSet rs = statement.executeQuery("select count(*) from msgInfo" ); 
    while (rs.next())
    {
    recordCount = rs.getInt(1);
    }

    来接受  select count(*) from emp 这条sql语句的返回值,所以ResultSet里面的数据(上面代码中rs.getInt(1))就应该是0,而不是答案中的没有数据。老师说的没有数据应该指的是:在该表为空的时候,执行 select * from emp 这种情况下 才会没有数据。

    2021-05-11 10:59:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师