[英]How to create dynamic arraylist and put the arraylists into hashmap?
public HashMap viewTableData(String tabName)
{
ArrayList<String> arrayList = new ArrayList<String>();
ArrayList<String> arrayList2 = new ArrayList<String>();
ArrayList<String> arrayList3 = new ArrayList<String>();
ArrayList<String> arrayList4 = new ArrayList<String>();
HashMap discoverMap = new HashMap();
try {
con = DAOConnection.sqlconnection();
stmt = con.createStatement();
stmt = con.createStatement();
query = "SELECT * FROM "+tabName;
System.out.println("Qry executed");
ps = con.prepareStatement(query);
rs = ps.executeQuery(query);
while(rs.next())
{
arrayList.add(rs.getString(i));
arrayList2.add(rs.getString(2));
arrayList3.add(rs.getString(3));
arrayList4.add(rs.getString(4));
}
discoverMap.put("qrycol1", arrayList);
discoverMap.put("qrycol2", arrayList2);
discoverMap.put("qrycol3", arrayList3);
discoverMap.put("qrycol4", arrayList4);
} catch (SQLException ex) {
Logger.getLogger(Query.class.getName()).log(Level.SEVERE, null, ex);
}
return discoverMap;
}
每個表都有不同的列,那么如何對動態sql表使用此代碼?(假設,我可以通過其他方法獲取列值,可以從Information.Schema中獲取列數。)假設,列存儲的數量以int值i。 如何使用循環並使其動態地工作?
關於您在注釋中提到的循環問題。 嘗試這樣的事情。 希望它能回答您的問題。 但是,如果您更詳細地描述業務場景,那將會更有幫助。
Map discoverMap = new HashMap();
for(int i=1; i<=4; i++){
List<String> list = new ArrayList<String>();
list.add(rs.getString(i));
discoverMap.put("querycol"+i,list);
}
不確定您要查找的是什么,但是也許此類( ResultSetAdapter
)可以幫助您:
它包裝了JDBC ResultSet
實例,並使它看起來像List<Map<String, Object>>
(換句話說,就是地圖列表)。 您可以像這樣遍歷它:
// Iterate over rows
for (Map<String, Object> row : new ResultSetAdapter(resultSet)) {
// Iterate over columns within current row
for (String column : row.keySet()) {
System.out.println(column + " = " + row.get(column));
}
}
這種方法的優點是您不需要將結果集中的值復制到新列表或映射中-適配器類僅修飾結果集,使其看起來像映射列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.