1
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应该只包含第一行,第二个元素应该包含两行,依此类推。

但情况似乎并非如此。

4

2 回答 2

1

您不断将相同的内容添加Vectorvect_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);
}
于 2013-03-24T02:25:01.267 回答
1

您不能继续将数据加载到同一个向量中。您需要为每一行创建一个 Vector:

//Vector vect = new Vector();
Vector vect_container = new Vector();
  for(int i=0;i<2;i++){
        rs.next();
        Vector vect = new Vector();
于 2013-03-24T02:25:08.427 回答