填充对象数据

我已经定义了一个变量

Object[] data; 

如何在下一步填写数据?

我想做这样的事情:

  public Object[] select() { Object[] data; // Here I definded it try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM CUSTOMERS"); while (rs.next()) { /* data = {(rs.getString("fname"), (rs.getString("lname")); */ // I know it's wrong, but how can I fill it with data from a database? } rs.close(); stmt.close(); } catch (SQLException ex) { System.out.println("error while selecting"); System.err.println(ex); } return data; } // ----- // somewhere else model.addRow(DB.INSTANCE.select()); 

它的

  data[i++] = new Object[] {rs.getString("fname"), rs.getString("lname")}; 

但坦率地说,我会考虑创建一个新类的选项。 我甚至有一个奇特的名字: Customer

所以你的主循环看起来像那样:

  while (rs.next()) { data[i++] = new Customer(rs.getString("fname"), s.getString("lname")); } 

现在你可能会问i是什么,我们如何创建data ? 所有好问题。 您事先不知道结果集将持续多长时间,因此数组不是一个好主意。 请尝试使用List

 public List select() { List data = new ArrayList(); // Here you define it // some code while (rs.next()) { data.add(new Customer(rs.getString("fname"), (s.getString("lname"))); } // etc. return data; } 

请注意,您几乎可以大声朗读: data ,请添加新Customer

最后,我强烈建议您查看finally关键字:它将节省您花在奇怪和间歇性错误上的时间。

希望有所帮助。

我认为在这种情况下使用数组列表会更好(因为你可能没有“SELECT * FROM CUSTOMERS”查询将返回多少数据)并使用它的.add方法而不是使用本机数组。

尝试:

 ArrayList myArray = new ArrayList(); while(...){ myArray.add(anything that has type Object); }