java中的ArrayList打印最后插入的值?

2023-12-08

我有以下java类

package com.picvik.model;

import java.util.Date;

public class ViewAlbum {

private Integer albumid;
private String albumname;
private String description;
private String location;
private Date date;
private Integer uid;

public Integer getAlbumid() {
    return albumid;
}
public void setAlbumid(Integer albumid) {
    this.albumid = albumid;
}
public String getAlbumname() {
    return albumname;
}
public void setAlbumname(String albumname) {
    this.albumname = albumname;
}
public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}
public String getLocation() {
    return location;
}
public void setLocation(String location) {
    this.location = location;
}
public Date getDate() {
    return date;
}
public void setDate(Date date) {
    this.date = date;
}
public Integer getUid() {
    return uid;
}
public void setUid(Integer uid) {
    this.uid = uid;
}

}

我正在从数据库检索数据并将其添加到我的数组列表中,如下所示

public ArrayList getAllAlbums(Integer uid) {
    ViewAlbum album = new  ViewAlbum();
    ArrayList<ViewAlbum>allAlbums = new ArrayList<ViewAlbum>();
    try {
        String qstring = "SELECT albumid, albumname, description, location," +
                " date, uid FROM picvik_picture_album WHERE " +
                "uid = '" + uid + "';";

        System.out.println(qstring);
        connection = com.picvik.util.MySqlConnection.getInstance().getConnection();
        ptmt = connection.prepareStatement(qstring);
        resultSet = ptmt.executeQuery();
        while(resultSet.next()) {
            //System.out.println(resultSet.getString("albumname"));
            album.setAlbumid(resultSet.getInt("albumid"));
            album.setAlbumname(resultSet.getString("albumname"));
            album.setDescription(resultSet.getString("description"));
            album.setLocation(resultSet.getString("location"));
            album.setDate(resultSet.getDate("date"));
            album.setUid(resultSet.getInt("uid"));
            allAlbums.add(album);
        }

        resultSet.close();
        ptmt.close();
        connection.close();


    } catch (Exception e) {
        e.printStackTrace();
    }   
    return allAlbums;
}

但是当我尝试打印存储在数组列表中的值时。它总是给我最后插入的记录。

<div class="row">
                <div class="span10">
                    <s:iterator value="allAlbums">
                        <s:property value="albumname"/>
                    </s:iterator>   
                </div>
            </div>

Here,

ViewAlbum album = new ViewAlbum();
// ...

while (resultSet.next()) {
    album.setAlbumid(resultSet.getInt("albumid"));
    // ...
    allAlbums.add(album);
}

你正在重复使用同样的东西album所有记录的实例。每次循环中实例的数据都会被覆盖。该列表不包含实例的副本,但包含参考到单个实例。你知道,Java 是面向对象的。

你应该创建一个新的album每条记录的实例。将实例化移至循环内部。

// ...

while (resultSet.next()) {
    ViewAlbum album = new ViewAlbum();
    album.setAlbumid(resultSet.getInt("albumid"));
    // ...
    allAlbums.add(album);
}

也可以看看:

  • 如何通过引用正确传递 Integer 类?

无关对于具体问题,您应该关闭 JDBC 资源finally块,或者在中打开它们try()try-with-resources 语句,否则在执行查询或处理结果集期间出现异常时它们仍然会泄漏。您还应该将 JDBC 资源的声明移至方法块内部,否则您也会遇到线程安全问题。最后但并非最不重要的一点是,您应该使用以下的 setter 方法PreparedStatement在 SQL 字符串中设置用户控制的变量。如果它们是字符串,就会出现 SQL 注入攻击漏洞。

也可以看看:

  • 由 ResultSet 支持的 Java 迭代器
  • JDBC MySql连接池做法避免连接池耗尽
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中的ArrayList打印最后插入的值? 的相关文章

随机推荐

  • x 轴上带有索引的数据帧的散点图

    我有熊猫DataFrame df with index named date和列columnA columnB and columnC 我正在尝试分散情节index在 x 轴上和columnA在 y 轴上使用DataFrame syntax
  • 获取 Facebook 页面的访问令牌 - WPF

    我正在开发一个 WPF 应用程序 需要在 facebook 页面的墙上发布内容 并且没有登录窗口 好吧 我想获取我的 Facebook 页面的访问令牌 这是我的代码 var fb new FacebookClient string toke
  • 在 WebView 中单击链接时加载本地 HTML 文件

    我有一个加载本地 HTML 文件的 WebView 如下所示 webView loadRequest NSURLRequest requestWithURL NSURL fileURLWithPath NSBundle mainBundle
  • java中只接受单个数字

    我正在编写一个简单的程序 它接受多个输入并显示最大的然后是第二大的 我唯一的问题是我希望程序只接受个位数 我知道这又回到了基础 但请耐心听我说 到目前为止我写的代码是 import javax swing JOptionPane publi
  • 在 Android 中运行时更新视图

    这个例子非常简单 我想让用户通过显示文本 canvas drawText 来了解应用程序正在做什么 然后 我的第一条消息出现 但其他消息则不出现 我的意思是 我有一个 setText 方法 但它不更新 onCreate Bundle bun
  • Gradle 构建失败并提示:找不到 org.jetbrains.kotlinx:kotlinx-collections-immutable-jvm:0.3.3

    我正在使用 Android Studio Canary 构建一个新项目 在设置 jet pack compose 的依赖项时 我将其作为构建输出 Execution failed for task app processDebugAndro
  • TKinter 样式和 Treeview 点击问题

    我在 TKinter 中的样式上遇到了困难 我的主要问题是您无法单击树视图中的任何内容 要进行测试 只需按 按测试 按钮即可 由于某种原因 style theme create 接管了我的树视图小部件 无论我尝试什么 我似乎都找不到解决方案
  • 如何检查Azure Function是否仍在运行

    我遇到一种情况 我必须定期调用 Azure 函数 当我调用该函数时 我需要检查天蓝色函数的状态 如果Azure函数正在运行 那么我需要推迟调用直到它完成 我正在尝试查看电子邮件队列 当电子邮件传入时 我需要使用 Amazon SES 发送电
  • 如何在 Obj-C 中打开和读取资源分支

    我有一个旧的 OS9 文件 其中包含带有 CODE 资源的资源叉 我想从 Obj C 读取该文件 我用类似的东西 NSFileHandle codeFile NSFileHandle fileHandleForReadingAtPath m
  • 如何在 python 中生成 nginx 安全链接

    如何使用 python 为 nginx 中的安全链接模块建立链接 我希望使用 nginx 来提供具有过期链接的安全文件 链接到 Nginx 维基 shadfc 答案中的代码有效 为了Python 3 需要进行一些修改 import base
  • 用 PHP 解决验证码问题?个人挑战?

    我想看看我是否可以使用 PHP 解决验证码 以应对一些个人挑战 没什么太难的 同一行中的单词 始终使用相同颜色的单词等 这是一个示例 http www simplyshows com img jpg 只是想看看会有多难 我的问题是 是否有基
  • 确定构造函数、初始化和重置方法的任务的最佳实践是什么

    尽管我是用 Java 设计的 但这是一个常见的 OOP 问题 我并不是想解决某个特定问题 只是想思考一些设计原则 根据我的经验 我养成了将对象设置分为三个阶段的习惯 目标是最大限度地减少 额外的工作 混乱的代码和受损的可扩展性 建造 所需采
  • subprocess.Popen 命令(反词)在 shell 与 Web 应用程序中产生不同的输出

    我让 Django 在标准 WSGI Apache httpd 组合上运行 我注意到当我在 shell 中运行代码与在浏览器中运行代码时 文件输出是不同的 我已经隔离了其他所有内容 但仍然遇到同样的问题 这是代码 def test anti
  • 如何将 JavaPairDStream 的结果写入 Spark Streaming 上的输出 kafka 主题?

    我正在寻找一种在输出 kafka 主题中编写 Dstream 的方法 只有当微批量 RDD 吐出一些东西时 我在 Java8 中使用 Spark Streaming 和 Spark streaming kafka 连接器 都是最新版本 我无
  • delphi 7中如何读取资源文件?

    我已经制作了资源文件 并已将其编译并与我的 delphi 单元链接 但是从该资源文件读取时我遇到了问题 implementation R dfm R stuff res stuff rc procedure TForm1 FormCreat
  • Firebase getDocument(querySnapshot)不起作用

    我面临着 Firebase 快照的问题 我已成功将我的 Fierbase 帐户与我的 Xcode 项目连接起来 我能够更改 Firestore 云中的数据 但我读不懂 这是我的功能 class UserService static func
  • 色彩空间转换

    我正在尝试编写一个程序 在用户输入图像后 他可以看到一些小的图像处理 更具体地说 我想将图像从 RGB 转换为 CMYK 和 YUV 然后在屏幕上仅显示这些颜色空间中的一个分量 即仅来自 CMY 的青色或来自 YUV 的 U 我设法实现了转
  • 在 iPhone 的 Objective-C 中解析 Java 属性文件

    我正在 iPhone SDK 中寻找一种读取属性文件 不是 XML 风格 的方法 例如 a comment a comment a a string b a string with escape sequences t n r space
  • Windows 上的 libgit2 可能存在 Rugged gem 安装问题

    我正在使用 Windows 和我的Gemfile有这一行 gem rugged 当我跑步时bundle install它给了我这个错误 Installing rugged 0 21 0 with native extensions Gem
  • java中的ArrayList打印最后插入的值?

    我有以下java类 package com picvik model import java util Date public class ViewAlbum private Integer albumid private String a