Отображение набора результатов динамически - PullRequest
1 голос
/ 22 мая 2011
   String query="select dept_id,deptName from dept";
    PreparedStatement ps=cnn.prepareStatement(query);
    rs=ps.executeQuery();    
    while(rs.next()){           
    String st1 = rs.getString(1);
    String str2= rs.getString(2);
    }       
    ps.close();        

Я сделал один метод для каждой вставки, обновления, удаления запросов, которые можно было бы использовать вокруг проекта.Таким же образом я пытаюсь разработать один метод выбора, который может получить любой запрос и вернуть результаты.Я попытался ArrayList, чтобы повторить запись, и теперь она работает, но отображает записи здесь не в последовательности.Код выглядит следующим образом: public ArrayList selectQuery (String columNames, String tableNames, String whereClause, String whereValues) создает исключительную ситуацию {

ArrayList<ArrayList> resultList = new ArrayList<ArrayList>();        
    ArrayList<String> resultRecord = null;  

try{
    if ((cnn==null)||cnn.isClosed()){
    cnn=DB.getOracleConnection();
    }

    if(whereClause==null || whereClause.equals("")){
        whereClause="";
    }

    String query = "select "+columNames+" from "+tableNames+" "+whereClause;

            PreparedStatement ps=cnn.prepareStatement(query); 

            if(whereValues==null || whereValues.equals("")){
    //do nothing
    }
    else{
        int j=1;
        String[] words = whereValues.split (",");
        for (int i=0; i < words.length; i++){   
            words[i]=removeDot(whereValues);
            ps.setString(j, words[i]);
            j+=1;
        }
    }//whereValuesNullCheck

            rs=ps.executeQuery();     
            ResultSetMetaData rsmd = rs.getMetaData();     

            while(rs.next()){                           

        resultRecord= new ArrayList<String>(); 

                    for(int i=1;i<=rsmd.getColumnCount();i++){        
                    resultRecord .add(rs.getString(i));   
                    }        
                resultList.add(resultRecord); 
            }     
    ps.close();      

        } catch (Exception e) {   
System.out.println("ERROR: "+e.toString());
SendEmail.send(mail,"raakh5@gmail.com","Problem in ASC.DAOMethods.select()", "+e.printStackTrace()+"); 
        }     

return resultList;

}//methodClosed

, и я вызываю следующий метод

public String viewPatients(ArrayList<ArrayList> result,String option)throws Exception{

PatientDAO pd = new PatientDAO();
DAOMethods dm = new DAOMethods();

String dataSet1="",dataSet2="",dataSet3="",records="",data="",country="",nationality="",source="",center="";

for(ArrayList record : result){

String patientId    =(String) record.get(0);
String rDate        =(String) record.get(1);
String title        =(String) record.get(2);
String firstName    =(String) record.get(3);
String lastName     =(String) record.get(4);
String country1     =(String) record.get(5);
String nationality1     =(String) record.get(6);
String source1      =(String) record.get(7);
String center1      =(String) record.get(8);

String title1 = cm.title(((String)title));
String name     = title1+" "+firstName+" "+lastName;

country         = c.displaySepecificCountry(((String)country1));
nationality         = c.displaySepecificCountry(((String)nationality1));
source          = cm.source(((String)source1));
String centerLocation   = pd.centerLocation(((String)center1));
center          = c.displaySepecificCountry(((String)centerLocation));
int age=9;

dataSet1+=
    "<tr "+cm.rowColor()+">"+
    "<td width=110  height=32 align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+
    rDate+"</a></td>"+

    "<td width=110  align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+
    "<font color=blue><b>"+patientId+"</b></font></a></td>";    

dataSet3+=
    "<td height=32 class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+
    name+"</a></td>"+

    "<td width=75 align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+"><font color=blue><b>"+
    age+"</b></font></a></td>"+

    "<td width=140 align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+country+"</a></td>"+

    "<td width=75  align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+nationality+"</a></td>"+    

    "<td width=75  align=center class=normalFont>"+
    "<a href=/servlet/PatientManager?option=5&patientId="+patientId+">"+source+"</td>"+

    "<td width=45>"+
    "<a href=/servlet/PatientManager?option=6&patientId="+patientId+">"+
    "<img src=/images/edit1.png border=0></a></td>"+
    "</tr>";
}
records=dataSet1+dataSet2+dataSet3;

return records;
}

Хорошо работает с результатами, но показывает записи здесь, как по этой ссылке: http://www.onlinenics.com/images/error.jpg

1 Ответ

0 голосов
/ 26 мая 2011

Если приведенные выше комментарии верны в предположении, что разные наборы результатов возвращают разное количество столбцов, вы должны иметь возможность определить, какие столбцы имеют значения.Используйте имена столбцов, чтобы получить значения.Используйте пустую строку там, где ее нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...