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
遍历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显示部分代码 …
代码 | 姓名 |
解决方法三:
使用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页面常见查询与显示方法分析之后,是不是清楚了呢?各位请继续关注js.aizhan.com吧,我们将为你呈现更多专业知识。