Java-调用super.toString()格式化结果集
查询数据库时,我可以毫无问题地打印结果集。我需要使用super.toString方法,该方法在我的超类中被重写,并提供我希望结果集显示的格式Java-调用super.toString()格式化结果集,java,resultset,tostring,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 = 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()
以格式化数据显示?您不能。超级用户对子类中的数据一无所知,除非正在格式化的数据位于父类中,并在子类中设置
但是,由于您的代码显示一个字符串对象是作为局部变量创建的,因此您的超级用户不可能知道关于这个变量的任何信息
toString的目的是输出该对象的表示,这通常意味着该对象的属性。您始终可以从类中调用super.foo()。这将调用超级类方法。显然,如果您在类之外执行foo()的实现,您无法选择调用它。在这种情况下,您总是调用“最后”重写版本。这叫做多态性。我已经试过了
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();
}
}
公共静态无效打印记录(结果集rs)
{
试一试{
ResultSetMetaData rsmd=rs.getMetaData();
int totalColumns=rsmd.getColumnCount();
StringBuilder sb=新的StringBuilder();
字符串columnName=null;
某人加上(“[”);
for(int i=1;Ithank for the responses.你们都说得太离谱了。我的变量是在超类中定义的,由子类继承的,除了数据。