jdbc - java中,数据库返回一个空的结果集,并赋给变量去调用构造函数,生成的对象是null还是什么?
PHP中文网
PHP中文网 2017-04-18 09:34:25
0
3
493
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中文网

认证高级PHP讲师

全員に返信(3)
伊谢尔伦

データベースが空の場合、rs.next() は false を返し、while は実行されません。
わからない場合は、たくさんの単語を入力してここに質問を投稿するよりも、空のデータシートを試して問題を解決する方がはるかに早いですよね?

いいねを押す +0
Ty80

@min 表面的な問題は解決されましたが、あなたが尋ねた質問は完全に解決されていないと思います。new キーワードの意味:

に注意を払うことをお勧めします。
  1. A

  2. のインスタンスを保存するためのスペースをヒープ メモリに作成します
  3. A

  4. のコンストラクターを呼び出します
  5. 仮想マシン スタック上のアドレスを開き、そのアドレスが開いたばかりのヒープ領域を指すようにします

最終的に、A a = new A(...) はスタック参照を取得します。JVM がクラッシュしない限り、このスタック参照は空になりません。

いいねを押す +0
伊谢尔伦

1.rs.next は間違っています。rs.hasNext() である必要があります。
2. null と 0 のパラメーターが渡された場合でも、オブジェクトは生成されます。生成しない理由はありません。考えてみてください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!