Java “这是为什么?”;org.apache.derby.client.net。NetResultSet42@1b5f7aa&引用;

Java “这是为什么?”;org.apache.derby.client.net。NetResultSet42@1b5f7aa&引用;,java,derby,Java,Derby,我试图用java将我的数据库显示到一个文本区域中。下面的代码可以工作,但是它显示的是“org.apache.derby.client.net”。NetResultSet42@1b5f7aa“而不是数据。你知道为什么吗?我怎样才能纠正这一点 我的代码 public static String listAll() { String output = listHeader(); try { ResultSet res = stmt.executeQuery("SELEC

我试图用java将我的数据库显示到一个文本区域中。下面的代码可以工作,但是它显示的是“org.apache.derby.client.net”。NetResultSet42@1b5f7aa“而不是数据。你知道为什么吗?我怎样才能纠正这一点

我的代码

public static String listAll() {
    String output = listHeader();
    try {
        ResultSet res = stmt.executeQuery("SELECT * from STUDENT.MESSAGES");
        while (res.next()) { // there is a result
            //output += formatListEntry(res);
            output += res;
            output +=System.lineSeparator();
        }
    } catch (Exception e) {
        System.out.println(e);
        return null;
    }
    return output;
}

这就是为什么:
output+=res

res是一个
org.apache.derby.client.net.NetResultSet
,该类不会重写
toString()

res.toString()
将返回
org.apache.derby.client.net。NetResultSet42@1b5f7aa

你必须改变:

output += res;


查看第一个值并以相同的样式添加所有其他值。

ResultSet
未实现
toString
方法,因此您看到的是
对象中定义的默认实现

相反,您应该使用
ResultSet#getXyz
方法从
ResultSet
获取数据:

ResultSet res = stmt.executeQuery("SELECT * from STUDENT.MESSAGES");
while (res.next()) { // there is a result
    //output += formatListEntry(res);
    output += res.getString("column1");
    output += " ";
    output += res.getString("column2");
    output +=System.lineSeparator();
}
一些建议:

  • 在查询中,检索相关列,不要使用
    “*”
    。仅用于测试目的
  • ResultSet
    读取数据时,最好使用列的名称,而不是预期的索引。如果其他人改变了表,并在其中添加一个列,也有助于代码的可读性和可调试性。
  • 如果必须从数据库中读取几行,最好返回
    列表
    ,而不是一个巨大的字符串

或者您可以使用res.getString(1)作为第一列,以此类推,也可以使用forloop@JackTools.Net阅读建议。最好是使用<代码>“CulnNeX”<代码>,而不是由于查询中的更改而导致的索引,特别是当有人在中间添加了一个列时。取决于您想做什么。@ JavaToStudi.NET取决于您是否想要一个好的或非常糟糕的设计。您好,谢谢您的帮助。现在它工作了,但是显示的数据完全不正确?这没有道理。
ResultSet res = stmt.executeQuery("SELECT * from STUDENT.MESSAGES");
while (res.next()) { // there is a result
    //output += formatListEntry(res);
    output += res.getString("column1");
    output += " ";
    output += res.getString("column2");
    output +=System.lineSeparator();
}