while(rs.next())不返回所有记录,而仅返回最后一个 - java

就我而言,我正在使用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())来解决问题?

while(rs.next())不返回所有记录,而仅返回最后一个 - java

参考方案

您对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);
}

如何从结果集中将数据从Oracle中获取到Java中的列表而没有循环? - java

如何从结果集中将数据从oracle中获取到Java中的列表而没有循环? 参考方案 你不能那样做。常用的做法是循环:while (rs.next()) { int value = rs.getInteger(1); } 等。唯一不循环的实用方法是接受结果集中只有一行。诸如Spring JDBC之类的框架可以为每个结果回调您的类,这意味着您无需显式循环,而是由框…

while循环中的线程是否会将CPU时间分配给另一个相同类型的线程? - java

如果我有以下伪代码:public static void main(String[] args) { TestRunnable test1 = new TestRunnable(); TestRunnable test2 = new TestRunnable(); Thread thread1 = new Thread(test1); Thread thre…

刷新Java参数 - java

我正在为一个名为robocode的编程游戏编写程序。问题在这里: void wallScan(boolean While){ stop(); getStraight(); turnGunRight(90); if(startabsolute){ straight=true; } while (While){ ahead(10000000); turnRigh…

虽然没有目的的循环? - java

在阅读一本Java教程时,我遇到了这段代码:while(getImage().getWidth(frame) <= 0);起初我以为这是一个错字,但在整本书中的多个地方重复了几次。不幸的是,关于它的作用没有任何解释,所以我想知道它的目的是什么。从表面上看,我知道它基本上什么也不做,因为即使它可以返回true或false,while语句也没有任何内容。这…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)