使用Object []方法返回数组

时间:2012-05-23 02:07:10

标签: java jcombobox

我有一个方法应该使用从我的数据库收集的数据填充JComboBox,但我看到能够从数据库中获取信息的唯一方法是在数组中。在完全编译程序之前,我需要将数组转换为object []。有没有办法真正做到这一点?或者这将是一个漫长的过程?我的代码如下。

public Object[] getId() {
  Connection con;
  Statement stmt;
  ResultSet rs;

  //Object[] returnId;
  Array returnId;
  try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con = DriverManager.getConnection("jdbc:odbc:collegesys","root","0blivi0n");

    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs = stmt.executeQuery("SELECT `id` FROM main");

    while(rs.next()) {
      returnId = rs.getArray("id");
    }

    con.close();
  } catch(Exception e) {
    e.printStackTrace();
  }
  return returnId.toObject();
}

1 个答案:

答案 0 :(得分:1)

试试这个:

return (Object[]) returnId.getArray();

<击>

我认为您希望从表"id"的所有行中收集main列的值。你的代码不会这样做,因为它是有条理的。试试这个:

public Object[] getId() {
  Connection con;
  Statement stmt;
  ResultSet rs;

  //Object[] returnId;
  ArrayList<Object> returnId = new ArrayList<Object>();
  try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    con = DriverManager.getConnection("jdbc:odbc:collegesys","root","0blivi0n");

    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    rs = stmt.executeQuery("SELECT `id` FROM main");

    while(rs.next()) {
      returnId.add(rs.getObject("id"));
    }

    con.close();
  } catch(Exception e) {
    e.printStackTrace();
  }
  return returnId.toArray(new Object[returnId.size()]);
}

当然,如果您对列id中的数据类型有了更好的了解,则可以更具体地了解返回类型以及获取值的方式(例如String[]和{{ 1}}或rs.getString("id")Integer[])。