Java “这是为什么?”;org.apache.derby.client.net。NetResultSet42@1b5f7aa&引用;
我试图用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
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();
}