2010-12-19 1 views
0

データベースを照会するときに問題なく結果セットを印刷できます。私は私が結果セットの中に表示したい形式を与え、私のスーパークラスでオーバーライドされたsuper.toStringメソッドを使用する必要があります。Java - 結果セットをフォーマットするためにsuper.toString()を呼び出す

res = stmt.executeQuery("Select * from registrar.student "); 
System.out.println("\nAll records in your table:"); 
while (res.next()) { 
    String data = ""; 
    data += res.getString("studentID") + " " 
      + res.getString("firstName") + " " 
      + res.getString("lastName") + " " 
      + res.getDouble("GPA")+ " " 
      + res.getString("status") + " " 
      + res.getString("mentor") +" " 
      + res.getString("level")+"\n"; 
    System.out.println(data); 

どのように私は私のデータの表示をフォーマットするsuper.toString()を追加することができますか?

答えて

0

できません。フォーマットしているデータが親にあり、子に設定されていない限り、あなたのスーパークラスはあなたの子クラスのデータについて何も知らない。

しかし、あなたのコードがローカル変数として作成されているStringオブジェクトを示しているので、あなたのスーパーがこの変数に関する何かを知る方法はありません。

toStringの目的は、そのオブジェクトの表現を出力することです。通常は、そのオブジェクトの属性を意味します。

0

あなたのクラスからいつでもsuper.foo()を呼び出すことができます。これにより、スーパークラスメソッドが呼び出されます。明らかに、あなたがクラスの外でそれをしている場合は、foo()の実装を選択することはできません。この場合、常に「最後の」オーバーライドされたバージョンを呼び出します。これを多型といいます。

0

私は応答のため、この

public static void printRecord(ResultSet rs) 
    { 
     try { 
      ResultSetMetaData rsmd=rs.getMetaData(); 

      int totalColumns=rsmd.getColumnCount(); 

      StringBuilder sb=new StringBuilder(); 
      String columnName=null; 

      sb.append("[ "); 
      for(int i=1;i<=totalColumns;i++) 
      { 
       columnName=rsmd.getColumnName(i); 

       sb.append(columnName); 
       sb.append(":"); 
       sb.append(rs.getString(i)); 

       if(i!=(totalColumns-1)) 
       { 
        sb.append(" , "); 
       } 
      } 
      sb.append(" ]"); 

      System.out.println(sb.toString()); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 
+0

感謝を試してみました。あなたはすべて私の頭の上に話している。私の変数はスーパークラスで定義され、データを除くサブクラスによって継承されます。 – ConfusedJavaNewbie1008

+0

結果セットを渡すだけです –

関連する問題