我有一个方法应该使用从我的数据库收集的数据填充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();
}
答案 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[]
)。