用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - jsp代码库

jsp查询数据库 查询结果在内存中缓存CachedRowSet 支持分页

2012-11-17 作者: 程序猿style举报

[jsp]代码库

		// 从request中获取JSP页面上表单的输入参数
		String sql = request.getParameter("querySQL");
		int pageIndex = Integer.parseInt((String)request.getParameter("pageIndex"));
		int pageSize = Integer.parseInt((String)request.getParameter("pageSize"));
		String servleturl = request.getParameter("servleturl");
		String errorurl = request.getParameter("errorurl");
		try {
			// 判断SQL语句是否为查询语句,以放置修改数据库
			sql = sql.trim();
			if (!sql.toUpperCase().startsWith("SELECT ")){
				throw new Exception("输入的SQL语句必须是查询语句!");
			}
			// 执行查询
			ResultSet rs = sm.executeQuery(sql);
			
			// 为了防止数据库连接被关闭时,ResultSet中的数据无法读取的问题
			// 在这里将ResultSet转换成CachedRowSet,它存在于内存中,不依赖于数据库。
			CachedRowSet crs = new CachedRowSetImpl();
			// populate方法把ResultSet中的数据导入到CachedRowSet中
			crs.populate(rs);
			
			// 构造能够分页的PageableResultSet对象
			PageableResultSet pageResultSet = new PageableResultSetImpl(crs);
			// 设置每页的记录数和当前页码
			pageResultSet.setPageSize(pageSize);
			pageResultSet.gotoPage(pageIndex);
			// 将结果放入session中
			HttpSession session = request.getSession();
			session.setAttribute("pageResultSet", pageResultSet);
			
			// 本Servlet处理完毕,将请求转发给下一页面。
			request.getRequestDispatcher(servleturl).forward(request, response);
		} catch (Exception e){
			// 查询错误时,清除Session的信息
			HttpSession session = request.getSession();
			session.removeAttribute("pageResultSet");
			// 出现异常时,记录异常信息
			request.setAttribute("errormsg", e.getMessage());
			// 将请求转发给错误页面
			request.getRequestDispatcher(errorurl).forward(request, response);
		}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...