2011-06-15 44 views
0

我有一个SQL查询返回一些结果(不幸的是,结果的数量会有所不同)。目前,我将结果存储到一个ArrayList中,像这样:帮助循环ArrayList只获得特定结果

ArrayList allTerms = new ArrayList(); 


try { 

    String selStmt = "SELECT .... "; 

    stmt = conn.prepareStatement(selStmt); 
    result = stmt.executeQuery(); 
    Object result_data; 

    while (result.next()) {  
     term = (((result_data = result.getObject("internal_code"))==null || result.wasNull())?" ":result_data.toString()); 
     allTerms.add(term); 
     desc = (((result_data = result.getObject("external_representation"))==null || result.wasNull())?" ":result_data.toString()); 
     allTerms.add(desc); 
     sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString()); 
     allTerms.add(sorter); 
     sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString()); 
     allTerms.add(sDate); 
    } 
    System.out.println(allTerms); 

好了,所以当我运行这一点,系统打印:

[2011SP, Spring 2011, 1, 11-15-2010, 2011SU, Summer 2011, 1, 01-15-2011, 2011FL, Fall 2011, 1, 04-01-2011, 2010Q2, CE Qtr 2 2010 Dec - Feb, 2, 08-01-2010, 2011Q3, CE Qtr 3 2011 Mar - May, 2, 11-01-2010, 2011Q4, CE Qtr 4 2011 Jun - Aug, 2, 02-01-2011, 2011Q1, CE Qtr 1 2011 Sep-Nov, 2, 05-01-2011] 

我不知道这是否是做的正确方法不管它是否工作到位,所以我现在要做的就是使用我的allTerms arrayList将这些结果转换为HTML页面的一部分。所以对于例如:

<table class="t1"> 
    <tr> 
    <td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1--></td> 
    </tr> 
</table> 
<table class="t2"> 
    <tr> 
    <td><!--Here I would want to show all rows from the allTerms arrayList with a "sorter" of 1 and a term of ....SU (where '....' is the year) --></td> 
    </tr> 
</table> 

回答

0

这是一个容易得多,如果你只是定义了一个短值保持类,如:

public class Row { // give it a better name ;) 
    public String internalCode; 
    public String externalRepresentation; 
    public String sorter; 
    public String sDate; 
} 

然后,确定保存这些行值的集合:

List<Row> rows = new ArrayList<Row>(); 

并将行添加到列表中:

while (result.next()) {  
     Row row = new Row(); 
     row.internalCode = (((result_data = result.getObject("internal_code"))==null || result.wasNull())?" ":result_data.toString()); 
     row.externalRepresentation = (((result_data = result.getObject("external_representation"))==null || result.wasNull())?" ":result_data.toString()); 
     row.sorter = (((result_data = result.getObject("sorter"))==null || result.wasNull())?" ":result_data.toString()); 
     row.sDate = (((result_data = result.getObject("sDate"))==null || result.wasNull())?" ":result_data.toString());  
} 

现在你可以过滤上收集这样的:

for (Row row:rows) { 
    if (!row.sorter.equals("1")) 
    continue; 

    // do what has to be done with records where sorter = "1" 
} 
+0

while循环中....我需要指定一个新行从数据库中拉各行呢,还是作为内部时循环为我做? – Dan 2011-06-15 19:20:58

+0

也,我甚至无法定义类,是否可以操纵给定的ArrayList? – Dan 2011-06-15 20:46:34