为了账号安全,请及时绑定邮箱和手机立即绑定

java中,数据库返回一个空的结果集,并赋给变量去调用构造函数,生成的对象是null还是什么?

java中,数据库返回一个空的结果集,并赋给变量去调用构造函数,生成的对象是null还是什么?

繁星淼淼 2019-03-30 18:14:50
ResultSet rs= pstmt.executeQuery();//数据库返回一个结果集,现在假设select的是                                     数据库中没有的数据,那么结果集为空    while (rs.next())    {        String str = rs.getString("Name");//此时str应该是null?        int id = rs.getInt("Id");     //id为0?        A a= new A(id,str);  //调用构造函数(定义见第二段代码),那a是什么?是                               null?此构造器还会被调用吗?a这个对象会生成吗?public final class A   //这个是A类的定义,成员变量和构造函数{private int id;private String name;public A(int Id,String Word)  {    this.id = Id;    this.name = Word;  }}我现在项目中要通过a这个对象来判断数据库返回的是否为空集,请问该如何判断?由此引出了上述问题(具体问题可以看代码段的注释)
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

数据库空集的话,rs.next()返回false,while里面不执行。
话说不知道的话,连下空的数据表试一下也比打那么多字在这里发个问题解决问题要快速的多的吧?

查看完整回答
反对 回复 2019-04-22
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

表面问题已经解决了,不过我觉得你问的问题并没有彻底解决,还是建议题主关注一下 new 关键字做的事情:

  1. 在堆内存开辟空间,以存储 A 的实例

  2. 调用 A 的构造方法

  3. 在虚拟机栈上面开辟地址,将地址指向刚刚开辟的堆空间

最终 A a = new A(...) 得到就是一个栈引用,这个栈引用不会为空,除非你的 JVM 挂了.


查看完整回答
反对 回复 2019-04-22
?
万千封印

TA贡献1891条经验 获得超3个赞

1.rs.next不对的,应该为rs.hasNext(),同样结果也为空吧.
2.null和0的参数传递进去,对象还是要生成的,没有理由不生成的啊,你想想为什么不呢?

查看完整回答
反对 回复 2019-04-22
  • 3 回答
  • 0 关注
  • 676 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信