我正试图用Object[]
填充Object[][]
数组,就像您将行添加到表中一样。但我得到的是data[resultSet.getRow() - 1]= mailbox;
线处的java.lang.ArrayStoreException
。我哪里错了?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;
}
变化
data = new String[resultSet.getRow()][7];
data = new Object[resultSet.getRow()][7];
因为你试图在这个数组中存储不是String
s的对象,所以它们不能存储在String[][]
数组中。
从docs的ArrayStoreException,似乎你是存储错误的类型到你的数组变量。尝试将数组声明为字符串数组,即
String[][] data = null;
除此之外,您还可以将return语句移动到try块中,以便在该块中声明结果变量。如果你的try块失败了,你可以简单地return null
。