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