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