Java 数组对象的结果集

Java 数组对象的结果集,java,arrays,database,dialog,Java,Arrays,Database,Dialog,所以我有这个密码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Object[] possibilities=null; try { possibilities = getNames(); } catch (Exception ex) { System.out.print

所以我有这个密码

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
Object[] possibilities=null;
    try {
        possibilities = getNames();
    } catch (Exception ex) {
        System.out.println("Thiss error "+ex.getMessage());
    }
    String s;
// TODO add your handling code here:
    s = (String) JOptionPane.showInputDialog(this, "Complete the sentence:\n"
            + "\"Green eggs and...\"",
            "Customized Dialog",
            JOptionPane.PLAIN_MESSAGE,
            null,
            possibilities,
            "ham");        // TODO add your handling code here:
}                                        
 public Object[] getNames() throws Exception {
    Object[] possibilities = null;
    int i=0;
    rs = ds.getResultSet("SELECT name FROM staff");
    possibilities= new Object[rs.getMetaData().getColumnCount()]; 
    System.out.println("Result set has data  "+rs.next());
    while (rs.next()) {
        System.out.println("Data from result set  "+rs.getString(1));
        possibilities[i] = rs.getObject(1);
        System.out.println("Data from array   "+possibilities[i]);
        i++;
    }

    return possibilities;
}
我想在员工的数据库中获取name(String)的值,这样我就可以在Joptionpane中使用它作为一个选项,但是当我执行它时,我得到的就是我得到的

Result set has data  true
Data from result set  jana dfjks
Data from array   jana dfjks
Data from result set  jkdfhjk jfhkjdsf
Thiss error 1
我可以做些什么来从数据库中获取超过20个结果的所有结果

通过替换解决 可能性=新对象[rs.getMetaData().getColumnCount()]; 用一个 可能性=新对象[100]


但是我想知道如何根据返回结果的数量使其动态化,列的数量是不相关的-您知道它只是一列,因为SELECT语句只选择一列

您事先不知道将返回多少行。因此,在这里使用数组是不合适的。你需要一些收集,可能是一个列表

一些示例代码:

List<String> nameList = new ArrayList<String>();

while (rs.next()) {
    nameList.add(rs.getString(1));
}
List nameList=new ArrayList();
while(rs.next()){
nameList.add(rs.getString(1));
}
现在,您的列表已从数据库中提取所有名称

   possibilities= new Object[rs.getMetaData().getColumnCount()]; // it is 1
在这里,您将数组大小指定为列号。但是您将行值放入这个数组中。因此,如果
行数>列数
,它将抛出
IndexOutofBoundsException
。要解决此问题,请使用
ArrayList
而不是数组

  List<Object> possibilities=new ArrayList<>();
列表可能性=新建ArrayList();