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

kha*_*cem 2 java jdbc resultset prepared-statement

在我的情况下,我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);
}
Run Code Online (Sandbox Code Playgroud)

我应该使用什么而不是while(rs.next())纠正问题?

这张照片可能有助于你理解这个问题

Mur*_*nik 8

你的使用没有任何问题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);
}
Run Code Online (Sandbox Code Playgroud)