Vector不断替换自己的行 - java(table& database)

时间:2013-03-24 02:21:51

标签: java resultset

Vector vect = new Vector();
Vector vect_container = new Vector();
  for(int i=0;i<2;i++){
        rs.next();
        vect.addElement(rs.getInt("ID"));
        vect.addElement(rs.getString("Name"));
        vect.addElement(rs.getFloat("Price"));
        vect.addElement(rs.getDouble("Quantity"));
        vect.addElement(rs.getDate("datetime"));
        vect.addElement(rs.getString("person"));
        vect_container.add(vect);
    }

我从数据库表中通过ResultSet(rs)获取行,但该向量将追加所有行的结果(不是逐行)。输出是:

[
    [23424234, Congestal, 10.0, 3500.0, 2013-03-23,
     Ahmed Ali, 34535647, Decksafeen, 35.0, 2000.0, 2013-03-23, Osama ], 
    [23424234, Congestal, 10.0, 3500.0, 2013-03-23,
     Ahmed Ali, 34535647, Decksafeen, 35.0, 2000.0, 2013-03-23, Osama ]
]

我认为vect_container中的第一个元素应该只保留第一行,第二个元素应该保持两行,依此类推。

但情况似乎并非如此。

2 个答案:

答案 0 :(得分:1)

您继续将Vector添加到vect_container。您需要在每个循环迭代中添加一个新的。

移动此行:

Vector vect = new Vector();

在rs.next()之后调用:

rs.next();
Vector vect = new Vector();

此外,不以这种方式循环ResultSet可能是安全的。一种更加自卑的方式是:

while(rs.next()) {
   Vector vect = new Vector();
   vect.addElement(rs.getInt("ID"));
   vect.addElement(rs.getString("Name"));
   vect.addElement(rs.getFloat("Price"));
   vect.addElement(rs.getDouble("Quantity"));
   vect.addElement(rs.getDate("datetime"));
   vect.addElement(rs.getString("person"));
   vect_container.add(vect);
}

答案 1 :(得分:1)

您无法将数据加载到同一个Vector中。您需要为每一行创建一个Vector:

//Vector vect = new Vector();
Vector vect_container = new Vector();
  for(int i=0;i<2;i++){
        rs.next();
        Vector vect = new Vector();