java - while(rs.next()) 不返回所有记录,只返回最后一条

标签 java jdbc prepared-statement resultset

在我的例子中,我使用 PreparedStatement 从我的数据库中选择记录: 选择的行数正确,但只显示最后一行。

我的代码:

while (rs.next()) {
    DetailCaisse detailCaisse = new DetailCaisse();
    devise.setLibSiglDev(rs.getString("LIB_DEV_DEV"));
    devise.setLibSiglDev(rs.getString("LIB_SIGL_DEV"));
    devise.setCodDevDev(rs.getInt("cod_Dev_dev"));
    detailCaisse.setDevise(devise);
    deviseDispo.add(detailCaisse);
}

我应该使用什么来代替 while(rs.next()) 来更正问题?

this picture may help u to understand the prob

最佳答案

您对 while(rs.next()) 的使用没有任何问题。问题是您不断用新值覆盖相同的 devise 实例,从而丢失旧值。相反,您应该在每次迭代时创建一个新实例:

while (rs.next()) {
    DetailCaisse detailCaisse = new DetailCaisse();

    Devise devise = new Devise(); // Here!
    devise.setLibSiglDev(rs.getString("LIB_DEV_DEV"));
    devise.setLibSiglDev(rs.getString("LIB_SIGL_DEV"));
    devise.setCodDevDev(rs.getInt("cod_Dev_dev"));

    detailCaisse.setDevise(devise);

    deviseDispo.add(detailCaisse);
}

关于java - while(rs.next()) 不返回所有记录,只返回最后一条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37384148/

相关文章:

java.lang.NoSuchFieldError : VERSION_2_3_0 错误

java 与 javascript 的 isNaN 等效的代码

java - 无法下载 groovy.jar

java - servlet 上下文的多个动态数据源

mysql - h2 是否有类似于 MySQL 中的 WHERE IN 的查询/子句?

python - Python 是否支持 MySQL 准备好的语句?

Java:如何在循环中分配变量值?

java - 在java中使用mysql变量(用于排名查询)

mysql - Netbeans 中的 Maven Web 项目抛出 java.sql.SQLException : No suitable driver found for jdbc:mysql://localhost:3306/

php - 这是使用交易的好例子吗?