我正在寻找这个问题,因为我几乎找不到合适的答案。 所以我有一个以Array(ArrayList)形式填充SQL字符串结果集的数组ArrayList。我的目标是将只有一行的结果转换为一维对象数组。
我已经多次尝试过这个网站的研究结果,但我所做的唯一知识就是如何将一维ArrayList转换为简单的数组。 我希望你们能在某些方面帮助我。谢谢!
我的表看起来像这样:
sizeid | diameter
1 | 32
2 | 40
使用SQL命令“SELECT diameter FROM size”,我将获得这两个数字32和40,存储在一个简单的2x1表中。
| 32 |
| 40 |
现在我希望将它们放在一维数组中。
要转换的方法:
private Object[] getSizes() {
query = new SQLquery();
query.setSQLstring("SELECT diameter FROM size");
query.runQuery();
List<Object> sizeList = query.getRowData();
Object[] sizes = new Object[sizeList.size()];
// here I want to convert the List to an array..
return sizes;
}
生成类SQLquery的ArrayList的方法:
public void outputResult() {
try {
if (result != null) {
ResultSetMetaData meta = result.getMetaData();
columns = meta.getColumnCount();
columnNames = new Object[columns];
for (int i=1; i<=columnNames.length; i++) {
columnNames[i-1] = meta.getColumnName(i);
}
List<Object> rowData = new ArrayList<Object>();
while (result.next()) {
Object[] row = new Object[columns];
for (int j=0; j<= columns; j++) {
row[j-1] = result.getString(j);
}
rowData.add(row);
}
}
} catch (SQLexception e) {
System.out.println(e);
}
}
和SQLquery类的简单get方法:
public List<Object> getRowData() {
return rowData;
}
答案 0 :(得分:1)
显然,您的getRowData()
方法返回List<Object>
,而它实际上包含数组。虽然这看起来很奇怪,因为你说它总是返回一个数组列表,但我认为这就是你所拥有的。
你需要一个遍历这些“对象”的循环,将它们向下转换为Object[]
,并取得第一个成员。
Object[] sizes = new Object[sizeList.size()];
int i = 0;
for (Object o : sizeList) sizes[i++] = ((Object[]) o)[0];
return sizes;
答案 1 :(得分:0)
您可以使用 Marko Topolnik 建议的方法。
但我建议你自己编写#34;表&#34; class,它解析结果集并根据您的查询将值放入N * M维数组(或List)中。这样,您可以存储元信息,如N或M维的大小等。