banq老師,關於將ResultSet封裝成List返回的問題

Q088發表於2006-03-28
這是我寫的查詢方法

	public static List executeQuery(String sql) {
		Statement stmt = null;
		Connection con = null;
		ResultSet rst = null;
		List resultList = new LinkedList();
		try {
			con = DBConnection.createConnection();
			stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
			rst = stmt.executeQuery(sql);
			int n = rst.getMetaData().getColumnCount();//取得總列數
			while ( rst.next() ) {
				Map map = new HashMap();
				for (int i = 1; i <= n; i++) {					
					map.put(rst.getMetaData().getCatalogName(i), rst.getObject(i));
				}
				resultList.add(map);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		} finally {
			DBConnection.releaseResultSet(rst);// 釋放資源
			DBConnection.releaseStatement(stmt);
			DBConnection.releaseConnection(con);
		}
		return resultList;
	}

把ResultSet包裝成List返回
在這裡要迴圈n次,把每條記錄的每個欄位放進Map中,又迴圈n次再把每個Map物件放到List中,最後返回
返回讀取時,又要轉成iterator迴圈n次遍厲元素,再把每個元素轉換成Map物件讀取key-value對
如果查詢的是大量的資料,這樣頻繁的呼叫,n次的轉來轉去,會不會增加開銷呢?我下載你的jivejdon3.0,找了一點您運算元據庫的部分,也有這樣頻繁的操作,這個問題,我一直不解
banq老師可否指點一二

相關文章