0

我有一个方法应该用从我的数据库中收集的数据填充 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();
}
4

1 回答 1

1

试试这个:

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

我收集到您想"id"从 table 的所有行中收集列的值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()]);
}

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

于 2012-05-23T02:09:09.397 回答