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 のデータ型をよりよく理解している場合は、戻り値の型と値の取得方法 (たとえばandまたはand )idについてより具体的にすることができます。String[]rs.getString("id")Integer[]rs.getInt("id")

于 2012-05-23T02:09:09.397 に答える