填充对象[]数据

时间:2012-01-08 00:53:54

标签: java database

我用

定义了一个变量
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());

2 个答案:

答案 0 :(得分:4)

这是

 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<Customer> select() {
    List<Customer> data = new ArrayList<Customer>(); // 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关键字:它可以节省您在奇怪和间歇性错误上花费的时间。

希望有所帮助。

答案 1 :(得分:0)

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

尝试:

ArrayList<Object> myArray = new ArrayList<Object>(); 

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