Maison  >  Questions et réponses  >  le corps du texte

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

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这个对象来判断数据库返回的是否为空集,请问该如何判断?由此引出了上述问题(具体问题可以看代码段的注释)

PHP中文网PHP中文网2741 Il y a quelques jours502

répondre à tous(3)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:36:25

    Si la base de données a un ensemble vide, rs.next() renverra false et le while ne sera pas exécuté.
    Si vous ne le savez pas, il est beaucoup plus rapide d'essayer une feuille de données vide que de taper autant de mots et de poster une question ici pour résoudre le problème, n'est-ce pas ?

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:36:25

    @min Le problème superficiel a été résolu, mais je pense que la question que vous avez posée n'a pas été complètement résolue. Je recommande quand même que le sujet fasse attention à new Ce que fait le mot-clé :

    .
    1. Créez de l'espace dans la mémoire tas pour stocker les instances de A

    2. Appelez le constructeur de A

    3. Ouvrez une adresse sur la pile de machines virtuelles et pointez l'adresse vers l'espace de tas qui vient d'être ouvert

    Au final, A a = new A(...) obtiendra une référence de pile. Cette référence de pile ne sera pas vide à moins que votre JVM plante...

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:36:25

    1.rs.next est faux, ce devrait être rs.hasNext(), et le résultat est également vide
    2 Si les paramètres null et 0 sont transmis, l'objet sera toujours généré. aucune raison de ne pas le générer Ah, réfléchissez-y, pourquoi pas ?

    répondre
    0
  • Annulerrépondre