2D对象数组的ArrayStoreException



我正试图用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

相关内容

  • 没有找到相关文章

最新更新