java - 为什么这会返回 "org.apache.derby.client.net.NetResultSet42@1b5f7aa"

标签 java derby

我正在尝试将我的数据库显示到 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/

相关文章:

hadoop - Hive Derby Metastore 配置

jpa - java.lang.IllegalArgumentException : You have attempted to set a parameter value using a name of string that does not exist in the query string 异常

java - Guava 按规则连续范围

java - 带有身份的 Spring Data 和 JPA + Hibernate 问题的 DDD 实现

java - 如何在ClientDataSource中设置内存数据库?

java - 尝试将行插入表时出现 SQL 语法错误异常

java - 将 Java 对象添加到数据库

java - CompletableFuture的完成处理程序在哪个线程中执行?

java - 如何从 spring application.yml 设置 "max_allowed_packet"属性

java - JSTL 未在 JavaBean 中找到属性