填充对象数据
我已经定义了一个变量
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