我写一个程序,将查询MS Access数据库,返回查询结果集,然后我想最终转换是结果集到一个String数组,所以我可以通过它进入Swing JComboBox的构造函数 - 所以ComboBox将列出查询返回的项目。将Java结果集为String数组
我已经能够存储结果集到一个ArrayList的行,然后将该ArrayList的转换成一个对象数组,组合框会列出正确的项目,但作为对象。我根本无法将该ArrayList强制转换为String数组。有谁知道这是否可能?这里是我的一些代码...
// Convert the Resultset into an array list
public ArrayList<ArrayList<Object>> Results2Array(ResultSet rs) throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();
int columns = metaData.getColumnCount();
ArrayList<ArrayList<Object>> al = new ArrayList<ArrayList<Object>>();
while (rs.next()) {
ArrayList<Object> record = new ArrayList<Object>();
for (int i = 1; i <= columns; i++) {
Object value = rs.getObject(i);
record.add(value);
}
al.add(record);
}
return al;
}
// Convert ArrayList to Object Array, and pass into GUI
ArrayList<String> Locations = new ArrayList<String>();
ArrayList<String> Months = new ArrayList<String>();
ArrayList<String> Years = new ArrayList<String>();
try {
DB.loadDriver();
DB.makeConnection();
DB.buildStatement();
Locations = DB.getLocations();
Months = DB.getMonths();
Years = DB.getYears();
Object[] arrLocations = Locations.toArray();
Object[] arrMonths = Months.toArray();
Object[] arrYears = Years.toArray();
dbGUI ui = new dbGUI(arrLocations, arrMonths, arrYears);
ui.setVisible(true);
任何人都可以提供任何建议吗?谢谢!
UPDATE:
这里是我收到堆栈跟踪:
java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.toArray(Unknown Source)
at kidsfirstdb.Main.main(Main.java:23)
感谢您的帮助。我尝试了你的建议,而且我似乎仍然在String [] arrLocations = locations.toArray(new String [0])上获取这些异常。 – littleK 2009-11-06 02:54:01
现在如果您不介意,请分享堆栈跟踪。 – 2009-11-06 03:02:25
我添加了堆栈跟踪到原来的帖子,谢谢。 – littleK 2009-11-06 03:16:04