gpt4 book ai didi

java - 如何迭代结果集并向对象添加值?

转载 作者:行者123 更新时间:2023-12-02 09:39:28 25 4
gpt4 key购买 nike

在我的主类中,我有一个打开的 swing JFrame,让用户选择一些选项,然后调用另一个类。该类使用提供的信息向 SQL 发出查询并获取一些值。我现在想将它们添加到 JFrame 上的表中。

看起来在表中显示数据的唯一方法是传入二维对象数组。显然,要做到这一点,我需要将值添加到二维对象数组中。到目前为止,这就是我所拥有的:

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, decodedUsername, decodedPassword);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(query);

if (rs != null) {
rs.last(); // moves cursor to the last row
size = rs.getRow(); // get row id
}

for (int i = 0; i < size; i++) {
//column is the column name in sql
column = rs.getString("propertyname");
//value is the corresponding value
value = rs.getString("propertyvalue");

data[0][i] = column;
data[1][i] = value;

System.out.println(data);
}
}

上面显示了连接到数据库,然后获取行数,然后尝试将值添加到对象数组数据。

我的预期是它打印数据库中的值,实际是这样的:

你有一个异常(exception)。

[Ljava.lang.StackTraceElement;@13edc840

最佳答案

迭代 ResultSet ,使用以下代码:

ResultSet rs = ...
while (rs.next()) {
// do something
}

您的代码的问题在于,在您的循环中,您正在递增 i ,并且向数组中的许多元素添加数据,但您没有迭代 ResultSet 中的指针。 ResultSet.next()返回true如果还有剩余行,并且递增存储在 ResultSet 中的指针.

而不是使用 Object[]要存储数据(需要索引参数),您可以使用 List<Object>并调用list.add() 。例如,

ResultSet rs = ...
List<Pair<String, String>> list = new ArrayList<>();
while (rs.next()) {
list.add(new Pair(rs.getString("column1"), rs.getString("column2")));
}

关于java - 如何迭代结果集并向对象添加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com