程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> jsp頁面常用的查詢及顯示方法分析

jsp頁面常用的查詢及顯示方法分析

編輯:關於JSP

本文實例講述了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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved