1 java sql generics list arraylist
我需要将ResultSet添加到列表列表中.传递给该方法的字符串是SQL select语句.数据库连接方法与此类中的所有其他方法完美配合,因此这不是问题所在.我知道我可以用List替换一些ArrayList声明,但我认为在这种情况下并不重要.
public static ArrayList<ArrayList> selectStatement(String string) throws SQLException {
ArrayList<ArrayList> listOfLists = null;
ArrayList list;
String[] record = null;
try {
rs = null;
dBConnectionOpen();
rs = st.executeQuery(string);
ResultSetMetaData metaData = rs.getMetaData();
int columns = metaData.getColumnCount();
while (rs.next()) {
list = null;
record = new String[columns];
for (int i = 1; i < columns; i++) {
record[i - 1] = rs.getString(i);
}
list = new ArrayList(Arrays.asList(record));
listOfLists.add(list);
}
} catch (Exception e) {
} finally {
dBConnectionClose();
}
return listOfLists;
}
Run Code Online (Sandbox Code Playgroud)
我以前做过这个,但由于某种原因,这次不行.我在这里错过了什么?
您初始化listOfLists与null价值.尝试从头开始实例化它:
ArrayList<ArrayList> listOfLists = new ArrayList<ArrayList>();
Run Code Online (Sandbox Code Playgroud)
此外,它会更好:
List接口而不是普通ArrayList类实现List<String>而不是原始List.String[] record,直接保存数据List<String>.List<String> list可以直接在while循环内部.知道了这一点,代码可以改为:
List<List<String>> listOfLists = new ArrayList<List<String>>();
...
while (rs.next()) {
List<String> list = new ArrayList<String>();
for (int i = 1; i < columns; i++) {
list.add(rs.getString(i));
}
listOfLists.add(list);
}
Run Code Online (Sandbox Code Playgroud)
更多信息: