Java - 调用super.toString()来格式化结果集

时间:2010-12-19 14:36:57

标签: java resultset tostring

查询数据库时,我可以毫无问题地打印结果集。我需要使用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()格式化数据显示?

3 个答案:

答案 0 :(得分:0)

你做不到。您的超级对您的子类中的数据一无所知,除非您格式化的数据位于您的父级中,并设置在子级中。

但是,由于您的代码显示的是一个String对象被创建为局部变量,因此您的超级服务器无法知道有关此变量的任何信息。

toString的目的是输出该对象的表示,这通常表示该对象的属性。

答案 1 :(得分:0)

你总是可以从你的班级调用super.foo()。这会调用超类方法。显然,如果你在课外做,你就不能选择你调用的foo()实现。在这种情况下,您总是调用“最后”覆盖的版本。这称为多态。

答案 2 :(得分: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();
        }


    }