我正在尝试使用Object[][]
填充Object[]
数组,就像向表中添加行一样。但我得到的只是java.lang.ArrayStoreException
行data[resultSet.getRow() - 1]= mailbox;
。
我是谁?
SQL部分正在运行
public static Object[][] getMailboxes() {
PreparedStatement statement = null;
ResultSet resultSet = null;
Object[][] data = null;
try {
statement = conn.prepareStatement(GET_MAILBOX, ResultSet.TYPE_SCROLL_INSENSITIVE,
CONCUR_READ_ONLY);
statement.execute();
resultSet = statement.getResultSet();
ResultSetMetaData rsmd = resultSet.getMetaData();
resultSet.last();
data = new String[resultSet.getRow()][7];
resultSet.beforeFirst();
Object[] mailbox = new Object[7];
while (resultSet.next()) {
for (int i = 0; i < 7; i++) {
System.out.println(i+" column of row "+resultSet.getRow());
if (0 == i) {
mailbox[i] = resultSet.getInt(i + 1);
} else if (6 == i || 5 == i) {
mailbox[i] = resultSet.getBoolean(i + 1);
} else {
mailbox[i] = resultSet.getObject(i + 1);
}
}
data[resultSet.getRow() - 1]= mailbox;
}
} catch (SQLException e) {
e.printStackTrace();
}
return data;
}
答案 0 :(得分:0)
更改
data = new String[resultSet.getRow()][7];
到
data = new Object[resultSet.getRow()][7];
因为您试图在此数组中存储非String
s的对象,所以它们不能存储在String[][]
数组中。
答案 1 :(得分:0)
从文档ArrayStoreException看来,您将错误的类型存储到数组变量中。 尝试将数组声明为字符串数组,i。即
String[][] data = null;
除此之外,您可以将return语句移动到try块中,以便在该块中声明结果变量。如果您的尝试阻止失败,您无论如何都可以return null
。