我正在尝试将我的数据库显示到 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;
}
最佳答案
ResultSet
没有实现 toString
方法,所以您看到的是 Object#toString
中定义的默认实现.
相反,您应该从 ResultSet
中获取数据使用 ResultSet#getXyz
方法:
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
读取数据时,最好使用列的名称而不是预期的索引。这是为了防止其他人更改表格并在表格中间添加一列,这也有助于提高代码的可读性和可调试性。 - 如果你必须从数据库中读取几行,最好返回一个
List<YourObject>
。而不是一个巨大的字符串。
关于java - 为什么这会返回 "org.apache.derby.client.net.NetResultSet42@1b5f7aa",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28457824/