本文實例講述了jsp頁面常用的查詢及顯示方法。分享給大家供大家參考,具體如下:
背景:
1. 需要將數(shù)據(jù)庫查詢結(jié)果在JSP中以列表方式顯示
2. 在一個良好的J2EE模式中數(shù)據(jù)庫查詢一般用DAO實現(xiàn)(Data Access Object), JSP僅用于顯示數(shù)據(jù)
方法一:
建一個類,將查詢出的結(jié)果封裝到該類中,然后將該類對象添加到List中。(這個也是我最開始時用的方法,不通用且太麻煩了)。
方法二:
在介紹方法二的時候,我們先來看看如何把ResultSet轉(zhuǎn)化為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取出所有數(shù)據(jù)封裝進(jìn)Collection。
具體做法:
1. 生成一個List對象(List list = new ArrayList() )。
2. 生成一個Map對象(Map map = new HashMap() )。使用Map封裝一行數(shù)據(jù),key為各字段名,value為對應(yīng)的值。(map.put("USER_NAME"), rs.getString("USER_NAME"))
3. 將第2 步生成的Map對象裝入第1步的list對象中(list.add(map) )。
4. 重復(fù)2、3步直到ResultSet遍歷完畢
在DBUtil. resultSetToList(ResultSet rs)方法中實現(xiàn)了上述過程(所有列名均使用大寫),可參考使用。
示例代碼:
//查詢數(shù)據(jù)部分代碼: … 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對該接口有相應(yīng)實現(xiàn),其中很有用的是oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet實現(xiàn)了ResultSet中的所有方法,但與ResultSet不同的是,OracleCachedRowSet中的數(shù)據(jù)在Connection關(guān)閉后仍然有效。
oracle的rowset實現(xiàn)在http://otn.oracle.com/software/content.html的jdbc下載里有,名稱是ocrs12.zip
示例代碼:
//查詢數(shù)據(jù)部分代碼: 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程序設(shè)計有所幫助。
標(biāo)簽:自貢 開封 吉林 臨汾 山南 烏蘭察布 銅川 白銀
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《jsp頁面常用的查詢及顯示方法分析》,本文關(guān)鍵詞 jsp,頁面,常用的,常,用的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。上一篇:jsp獲取url路徑的方法分析
下一篇:jsp編程常用技巧小結(jié)