Java 填充对象[]数据

Java 填充对象[]数据,java,database,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()) {

我定义了一个带有

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());
它是

但坦率地说,我会考虑创建一个新类的选项。我甚至给它起了个别致的名字:
Customer

因此,您的主循环如下所示:

 while (rs.next()) {
     data[i++] = new Customer(rs.getString("fname"), s.getString("lname"));
 }
现在您可能会问什么是
i
,我们首先如何创建
数据
?都是好问题。您事先不知道结果集的长度,因此数组不是一个好主意。尝试改用
列表

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;
}
公共列表选择(){
List data=new ArrayList();//在这里定义它
//一些代码
while(rs.next()){
添加(新客户(rs.getString(“fname”),(s.getString(“lname”));
}
//等等。
返回数据;
}
请注意,您几乎可以大声朗读:
数据
,请添加新的
客户

最后,我强烈建议您查看一下
Finally
关键字:它将为您节省时间,否则您将花费在奇怪和间歇性错误上

希望这能有所帮助。

很好

但坦率地说,我会考虑创建一个新类的选项。我甚至为它起了一个别致的名字:
Customer

因此,您的主循环如下所示:

 while (rs.next()) {
     data[i++] = new Customer(rs.getString("fname"), s.getString("lname"));
 }
现在,您可能会问什么是
i
,以及我们如何首先创建
数据
?所有这些问题都很好。您事先不知道结果集的长度,因此数组不是一个好主意。请尝试改用
列表

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;
}
公共列表选择(){
List data=new ArrayList();//在这里定义它
//一些代码
while(rs.next()){
添加(新客户(rs.getString(“fname”),(s.getString(“lname”));
}
//等等。
返回数据;
}
请注意,您几乎可以大声朗读:
数据
,请添加新的
客户

最后,我强烈建议您查看一下
Finally
关键字:它将为您节省时间,否则您将花费在奇怪和间歇性错误上


希望能有所帮助。

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

尝试:

ArrayList myArray=new ArrayList();
而(…){
添加(任何具有类型对象的对象);
}

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

尝试:

ArrayList myArray=new ArrayList();
而(…){
添加(任何具有类型对象的对象);
}

即使我只想将新数据加载到JTable中?我也不想以任何方式操作它们。也许你可以创建一个addRow方法来直接选择和更新JTable?@kavuch,特别是如果你只想在JTable中显示数据:看看custom
TableModel
s,它们是否闪亮?说真的,这取决于你只需要一个2D数组,使用
新对象[]{rs.getString(“fname”),rs.getString(“lname”)};
读取元素,一个
列表来保存这些元素,然后
返回data.toArray(新对象[data.size()])
获取结果矩阵。这是一种糟糕的方法,但我从不推荐它。@Cemre封装怎么样?你最终会得到一种既了解DB细节又了解Swing内部结构的方法——这确实是一个非常混乱的局面。非常有趣的例外。我相信你使用的是NetBeans,问题在这里描述:-关于代码,您似乎混合了几种方法:存储到
列表中的内容必须与列表声明的泛型类型相对应。不幸的是,注释不适合讨论,因此,要么创建一个概述此问题的新问题,要么检查所有类型:IDE应为您突出显示违规行为。即使我只是想要将新数据加载到JTable中?我不想以任何方式使用它们。也许你可以创建一个addRow方法来直接选择和更新JTable?@kavuch,特别是如果你只想在JTable中显示数据:看看custom
TableModel
s,它们是否闪亮?说真的,这取决于你。如果你只需要一个2D数组,请使用
new Object[]{rs.getString(“fname”),rs.getString(“lname”)};
读取元素,一个
列表来保存这些元素,并
返回data.toArray(新对象[data.size()][)
获取结果矩阵。这是一种糟糕的方法,但我从不推荐它。@Cemre封装怎么样?你最终会得到一种既了解DB细节又了解Swing内部结构的方法——这确实是一个非常混乱的局面。非常有趣的例外。我相信你使用的是NetBeans,问题在这里描述:-关于代码,您似乎混合了几种方法:存储到
列表的内容必须与列表声明的泛型类型相对应。不幸的是,注释不适合讨论,因此,要么创建一个概述此问题的新问题,要么只检查所有类型:IDE应为您突出显示冲突。复制到-为什么要把同一个问题贴两次?一个复制到显然一个复制到-为什么要把同一个问题贴两次?一个复制到显然