用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...