0
我是JSF和bean的新手,我有一种情况,我需要从数据库(oracle)获取一些数据并在控制台上显示。我的第一个bean将从JSF中读取数据并在第二个bean中调用相应的方法,并将包含数据的列表发回给bean。根据数据再次调用第二个bean中的另一个方法来获取更多数据。最后数据将发布给用户。我的第二个bean将负责数据库连接。这是我的代码。 第一个bean,在jsf和javabean中维护会话
String ban = null,ban1 = null;
masterlist = (ArrayList<ThreadDTO>) getMbd().getBanOrCtn(dbean);
if (masterlist.isEmpty()) {
setSuccess(2);
return;
} else {
Iterator<ThreadDTO> itr = masterlist.iterator();
while (itr.hasNext()) {
ThreadDTO dto = (ThreadDTO) itr.next();
ban1 = dto.getWireless_ban();
if (ban1 != null) {
ban = ban1;
break;
}
}
ctnThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean);
dbean.setSearchby("wireless_ban");
dbean.setSearchValue(ban);
banThreadList = (ArrayList<ThreadDTO>) getMbd().getThreads(dbean);
masterlist.clear();
masterlist = (ArrayList<ThreadDTO>) getMbd().removeDuplicates( ctnThreadList, banThreadList);
setResultlist((ArrayList<ThreadDTO>) getMbd().getApis(masterlist));
}
二Bean是,
public ArrayList<ThreadDTO> getBanOrCtn(SearchDetailsDTO db) throws Exception {
ArrayList<ThreadDTO> threadlist1 = new ArrayList<>();
//query here
try {
connection = getConnections(timeZone);//getting connection
stmt = connection.createStatement();
rs = stmt.executeQuery(banQuery);
if (!rs.isBeforeFirst()) {
System.out.println("empty resultset");
stmt.close();
rs.close();
connection.close();
} else {
while (rs.next()) {
ThreadDTO thread = new ThreadDTO();
//code to set the values
break;
}
}
} catch (SQLException sql) {
addErrorMessage(sql.getMessage());
}
return threadlist;
}
这未必是一个良好的编码习惯,然而,这是工作的罚款单用户,但我的要求是由多个用户访问。任何人都可以告诉我,我怎么能做到这一点。提前致谢。
感谢您的快速回复。我仍然收到ExhaustedResultSet和Closed ResultSet错误。但这必须通过会话来区分吗?请让我知道如何超过这个错误。 – 2015-03-02 13:33:39