java - 使用 rs.next() 获取所有数组元素

标签 java sql arrays database iterator

我在从数据库中获取数据时遇到问题。 我正在尝试获取数组列表。

但我的问题是我只能获取数组的最后一个元素,这可能是因为它覆盖了前一个元素。

这是我的代码。

                 String sql;
                 sql = "select * from NM_PROPERTIES_LOADER";
                 ResultSet rs = stmt.executeQuery(sql);
                 String prop_name = null;
                 String prop_value = null;
                 PropertyData reader = new PropertyData();

                 while(rs.next()){
                     prop_name = rs.getString("prop_name");
                     prop_value = rs.getString("prop_value");
                     reader.setPropName(prop_name);
                     reader.setPropValue(prop_value);
                     ..//other setter..  


                     System.out.println(prop_name + " " + prop_value);
                 }
                 prop.add(reader);

在我的系统输出中,我可以检索所有数据。但在我的页面上只检索到最后一个元素。这是我的 Dao 类。

public class PropertyData {

private int id;
private String propName;
private String propValue;
private String engineName;
private String desc;
private Date createdAt;
private String createdBy;
private Date updatedAt;
private String updatedBy;



public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getPropName() {
    return propName;
}
public void setPropName(String propName) {
    this.propName = propName;
}
public String getPropValue() {
    return propValue;
}
public void setPropValue(String propValue) {
    this.propValue = propValue;
}
public String getEngineName() {
    return engineName;
}
public void setEngineName(String engineName) {
    this.engineName = engineName;
}
public String getDesc() {
    return desc;
}
public void setDesc(String desc) {
    this.desc = desc;
}
public Date getCreatedAt() {
    return createdAt;
}
public void setCreatedAt(Date createdAt) {
    this.createdAt = createdAt;
}
public String getCreatedBy() {
    return createdBy;
}
public void setCreatedBy(String createdBy) {
    this.createdBy = createdBy;
}
public Date getUpdatedAt() {
    return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
    this.updatedAt = updatedAt;
}
public String getUpdatedBy() {
    return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
    this.updatedBy = updatedBy;
}

}

最佳答案

在循环的每次迭代中,您都会覆盖reader 的内容。 你想在循环内创建 reader,而不是在循环外, 并在循环内执行 prop.add(reader),而不是在循环外。

像这样:

 String sql = "select * from NM_PROPERTIES_LOADER";
 ResultSet rs = stmt.executeQuery(sql);

 while(rs.next()) {
     PropertyData reader = new PropertyData();
     String name = rs.getString("prop_name");
     String value = rs.getString("prop_value");
     reader.setPropName(name);
     reader.setPropValue(value);

     // other setter calls..  

     prop.add(reader);
 }

关于java - 使用 rs.next() 获取所有数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37064828/

相关文章:

java - C:将二维 double 组转换为java二维 double 组

java - 如何预订不同旅程日期的单一巴士对象

java - 迭代 if 条件

php - mysqli_real_escape_string创建SQL语法错误

php - 检测潜在的 SQL 注入(inject)攻击以及其他安全问题

sql - 在SQLite中使用SELECT…GROUP BY…HAVING

java - 您需要将主题与设计库一起使用

java - 字段存在时出现 NoSuchFieldException

c++ - 如何将一维数组与二维数组进行比较(C++)

c - 问题中函数无法返回 returnSize 数组中的元素