帝王谷资源网 Design By www.wdxyy.com

本文实例讲述了jsp页面常用的查询及显示方法。分享给大家供大家参考,具体如下:

背景:

1. 需要将数据库查询结果在JSP中以列表方式显示
2. 在一个良好的J2EE模式中数据库查询一般用DAO实现(Data Access Object), JSP仅用于显示数据

方法一:

建一个类,将查询出的结果封装到该类中,然后将该类对象添加到List中。(这个也是我最开始时用的方法,不通用且太麻烦了)。

方法二:

在介绍方法二的时候,我们先来看看如何把ResultSet转化为List吧,代码如下:

private static List resultSetToList(ResultSet rs) throws SQLException {
 List list = new ArrayList();
 ResultSetMetaData md = rs.getMetaData();
 int columnCount = md.getColumnCount();
 while (rs.next()) {
  Map rowData = new HashMap();
  for (int i = 1; i <= columnCount; i++) {
  rowData.put(md.getColumnName(i), rs.getObject(i));
  }
  list.add(rowData);
 }
 return list;
}

遍历ResultSet取出所有数据封装进Collection。

具体做法:

1. 生成一个List对象(List list = new ArrayList() )。
2. 生成一个Map对象(Map map = new HashMap() )。使用Map封装一行数据,key为各字段名,value为对应的值。(map.put("USER_NAME"), rs.getString("USER_NAME"))
3. 将第2 步生成的Map对象装入第1步的list对象中(list.add(map) )。
4. 重复2、3步直到ResultSet遍历完毕

在DBUtil. resultSetToList(ResultSet rs)方法中实现了上述过程(所有列名均使用大写),可参考使用。

示例代码:

//查询数据部分代码:
…
Connection conn = DBUtil.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
try{
String sql="select emp_code, real_name from t_employee where organ_id=";
pst = conn.preparedStatement(sql);
pst.setString(1, "101");
rs = pst.executeQuery();
List list = DBUtil. resultSetToList(ResultSet rs);
return list;
}finally{
DBUtil.close(rs, pst ,conn);
}
//JSP显示部分代码
<%
List empList = (List)request.getAttribute("empList");
if (empList == null) empList = Collections.EMPTY_LIST;
%>
…
<table cellspacing="0" width="90%">
<tr> <td>代码</td> <td>姓名</td> </tr>
<%
Map colMap;
for (int i=0; i< empList.size(); i++){
colMap = (Map) empList.get(i);
%>
<tr>
<td><%=colMap.get("EMP_CODE")%></td>
<td><%=colMap.get("REAL_NAME")%></td>
</tr>
<%
}// end for
%>
</table>

解决方法三:

使用RowSet。

RowSet是JDBC2.0中提供的接口,Oracle对该接口有相应实现,其中很有用的是oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet实现了ResultSet中的所有方法,但与ResultSet不同的是,OracleCachedRowSet中的数据在Connection关闭后仍然有效。

oracle的rowset实现在http://otn.oracle.com/software/content.html的jdbc下载里有,名称是ocrs12.zip

示例代码:

//查询数据部分代码:
import javax.sql.RowSet;
import oracle.jdbc.rowset.OracleCachedRowSet;
…
Connection conn = DBUtil.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
try{
……
String sql="select emp_code, real_name from t_employee where organ_id=";
pst = conn.preparedStatement(sql);
pst.setString(1, "101");
rs = pst.executeQuery();
OracleCachedRowSet ors = newOracleCachedRowSet();

希望本文所述对大家jsp程序设计有所帮助。

标签:
jsp,查询,显示

帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?