0
我能夠實現我想要的大部分,但在這裏我卡住..請幫助。如何迭代通過哈希映射映射列表元素
public class DatabaseHandler {
private static String DB_CLASS ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//private static String DB_USER,DB_PASSWORD, DB_NAME, DB_URL, DB_QUERY_ID;
Statement stmt; //=null;
Connection conn;// = null;
public static Map<Integer, List<String>> allActiveQuery = new HashMap<Integer, List<String>>();
public DatabaseHandler() {
brattleDb();
}
public void brattleDb(){
try {
Class.forName(DB_CLASS);
conn = DriverManager.getConnection("jdbc:sqlserver://TOSHIBA-PC;databasename=brattle;user=sa;password=naved");
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM database_details_master WHERE status = 1");
int i=0;
while(rs.next()){
List<String> row = new ArrayList<String>();
row.add(rs.getString(1).toString());
row.add(rs.getString(2).toString());
row.add(rs.getString(3).toString());
row.add(rs.getString(4).toString());
row.add(rs.getString(5).toString());
row.add(Integer.toString(rs.getInt(6)));
row.add(Integer.toString(rs.getInt(7)));
row.add(rs.getString(8).toString());
row.add(rs.getString(9).toString());
row.add(rs.getString(10).toString());
row.add(rs.getString(11).toString());
row.add(Integer.toString(rs.getInt(12)));
row.add(Integer.toString(rs.getInt(13)));
allActiveQuery.put(i, row);
i++;
}
rs.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void setDynamicConnection(String db_name, String db_user, String db_pass, String db_url){
try {
Class.forName(DB_CLASS);
conn= DriverManager.getConnection("jdbc:sqlserver:"+db_url+";databasename="+db_name+";user="+db_user+";password="+db_pass+"");
stmt = conn.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
上述代碼讀取操作從該狀態爲活性的數據庫中的行。
JSP的我試圖獲取所有類似的行:
<%
// Connection to get active queries
try{
DatabaseHandler dbh = new DatabaseHandler();
for(Map.Entry<Integer, List<String>> entry: dbh.allActiveQuery.entrySet()){
Integer key = entry.getKey();
out.println("Query:"+key+"<br><hr>");
List<String> values = entry.getValue();
out.println(values+ "<br> <hr> ");
}
}
catch(Exception e){
out.print(e.toString());
}
%>
而結果我得到這個:
1. [sa, wms, TOSHIBA-PC, naved, FIFO Query, 23, 35, select CSDETL01.SKUCODE ,SKUMST00.SKUDESC ,CSDETL01.BATCH ,SKUMST00.MRP , CSDETL01.MFGDATE ,CSDETL01.EXPDATE ,sum(CSDETL01.CURQTY) , Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) ,Datediff(d, GETDATE(), CSDETL01.EXPDATE) , Datediff(d, GETDATE(), CSDETL01.EXPDATE)*100/Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) from CSDETL01, SKUMST00 where SKUMST00.INOWNER =~MCCAIN~ and SKUMST00.whse =~MEH~ and SKUMST00.SKUCODE = CSDETL01.SKUCODE and CSDETL01.STATUS <= ~400~ group by CSDETL01.SKUCODE, CSDETL01.BATCH, CSDETL01.MFGDATE, CSDETL01.EXPDATE, SKUMST00.MRP, SKUMST00.SKUDESC order by CSDETL01.SKUCODE, CSDETL01.BATCH, [email protected], , , 1, 24] <br>
2. [sa, wms, TOSHIBA-PC, naved, Partial Pallet Query, 23, 38, Select PALLETNO,SKUCODE, BATCH, MFGDATE, EXPDATE, CURLOCID, DTLM, sum(CURQTY) as SumQTY from CSDETL01 where INOWNER =~MCCAIN~ and whse =~MEH~ and SKUCODE in (~919044~, ~911802~) and STATUS <= ~400~ and LDUNIT = ~PALLET~ group by PALLETNO, SKUCODE, BATCH, MFGDATE, EXPDATE, CURLOCID, DTLM order by PALLETNO, [email protected], , , 1, 1]
3. [sa, wms, TOSHIBA-PC, naved, FEFO QUERY, 23, 40, select CSDETL01.SKUCODE ,SKUMST00.SKUDESC ,CSDETL01.BATCH ,SKUMST00.MRP , CSDETL01.MFGDATE ,CSDETL01.EXPDATE ,sum(CSDETL01.CURQTY) , Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) ,Datediff(d, GETDATE(), CSDETL01.EXPDATE) , Datediff(d, GETDATE(), CSDETL01.EXPDATE)*100/Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) from CSDETL01, SKUMST00 where SKUMST00.INOWNER =~MCCAIN~ and SKUMST00.whse =~MEH~ and SKUMST00.SKUCODE = CSDETL01.SKUCODE and CSDETL01.STATUS <= ~400~ group by CSDETL01.SKUCODE, CSDETL01.BATCH, CSDETL01.MFGDATE, CSDETL01.EXPDATE, SKUMST00.MRP, SKUMST00.SKUDESC order by CSDETL01.SKUCODE, CSDETL01.BATCH, [email protected], , , 1, 1]
我想通過列表作爲單個元素的值進行迭代,但我作爲整個字符串獲得價值...
我想輸出是這樣的
1. sa
wms
TOSHIBA-PC
naved
FIFO Query, 23, 35, select CSDETL01.SKUCODE ,SKUMST00.SKUDESC ,CSDETL01.BATCH ,SKUMST00.MRP , CSDETL01.MFGDATE ,CSDETL01.EXPDATE ,sum(CSDETL01.CURQTY) , Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) ,Datediff(d, GETDATE(), CSDETL01.EXPDATE) , Datediff(d, GETDATE(), CSDETL01.EXPDATE)*100/Datediff(d, CSDETL01.MFGDATE, CSDETL01.EXPDATE) from CSDETL01, SKUMST00 where SKUMST00.INOWNER =~MCCAIN~ and SKUMST00.whse =~MEH~ and SKUMST00.SKUCODE = CSDETL01.SKUCODE and CSDETL01.STATUS <= ~400~ group by CSDETL01.SKUCODE, CSDETL01.BATCH, CSDETL01.MFGDATE, CSDETL01.EXPDATE, SKUMST00.MRP, SKUMST00.SKUDESC order by CSDETL01.SKUCODE, CSDETL01.BATCH
[email protected],
,//null values
, //null vaues
1
24
等等......請好心幫我卡在這裏..
我知道我失去了一些東西愚蠢的,但我無法弄清楚..請我是新來的Java – Casey
嘗試{ \t \t數據庫處理器胸徑=新數據庫處理器(); \t \t \t 爲\t(Map.Entry的<整數,列表>項:dbh.allActiveQuery.entrySet()){ \t \t \t整數鍵= entry.getKey(); \t \t \t out.println(「Query:」+ key +「 values = entry.getValue(); \t \t \t \t迭代器 itr = values.iterator(); \t \t \t \t而(itr.hasNext()){ \t \t \t \t \t通過out.println(itr.next()+ 「
」); \t \t \t \t列表
」); \t \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t \t出來。println(「
」); \t \t \t \t \t \t \t } \t \t } \t \t \t \t \t \t \t趕上(例外五){ \t \t \t的out.print(e.toString()); \t \t} \t \t \t \t%> – Casey