- 浏览: 61549 次
- 性别:
- 来自: 成都
最新评论
-
云_不忘初心:
如果是可视化界面插入空值 该怎么办
oracle插入空值 -
aa00aa00:
例子通俗易懂,我已经成功运行起来了
jsp调用oracle存储过程分页
首先看下在oracle中一般的分页代码
然后看下oracle存储过程中的通用分页代码的写法
相关的东西已经准备好了,现在看下在jsp中如何调用这个存储过程,如果使用mvc结构可以把相关代码提到业务逻辑层,这里为了方便展示就直接写在一起了
运行结果如下
select * from emp; --分页代码分解式第一步 select e.*,rownum rn from (select * from emp)e;--分页代码分解式第二步 select e.*,rownum rn from (select * from emp)e where rownum<10; ;--分页代码分解式第第三步 select * from (select e.*,rownum rn from (select * from emp)e where rownum<10) where rn>6; --最终的分页代码
然后看下oracle存储过程中的通用分页代码的写法
--由于返回值一个是集合,所以不能用一般的参数,必须先创建一个packageg,里面包含游标类型 --第一步创建一个package create or replace package fengyepackage as type fengye_cursor is ref cursor; --创建游标类型变量fengye_cursor end fengyepackage; --第二步创建一个procedure create or replace procedure sp_fengye(pageNow in number,pageSise in number,tableName in varchar2,sortOrder in varchar2,pageCount out number,fengye_cursor out fengyepackage.fengye_cursor) is v_rowCount number(2); --总记录数目 v_pageCount number(2); --总页数 v_fromline number(2); --从第v_fromline行开始获取返回值 v_toline number(2); --到v_toline number行结束 v_sql varchar2(1000); --装载sql语句的变量 begin v_sql:='select count(*) from '||tableName; --组织一个sql execute immediate v_sql into v_rowCount; --执行sql,并且把返回值赋给v_rowCount if mod(v_rowCount,pageSise)=0 then --用v_rowCount%pageSise=0的取余数的方式是错误的,这是java代码里面的用法 v_pageCount:=v_rowCount/pageSise; else v_pageCount:=ceil(v_rowCount/pageSise); --ceil相当于加了1 end if; v_toline:=pageNow*pageSise; v_fromline:=(pageNow-1)*pageSise; pageCount:=v_pageCount; v_sql:='select * from (select e.*,rownum rn from (select * from '||tableName||' '||sortOrder||')e where rownum<='||v_toline||') where rn>'||v_fromline;--两个连接符号之间要用空格隔开,否则java程序无法识别 open fengye_cursor for v_sql; --close fengye_cursor; --关闭游标,但是现在不能关闭否则java程序调用不到数据 --把游标的结果集传给JAVA的resultset之是不需要我们来手动的关闭游标的,因为JAVA把这个结果集接收过来的之后,如果JAVA对这个结果集操作完毕的话,JAVA会把这个结果集关闭掉的,不需要我们手动的去作任何操作! end;
相关的东西已经准备好了,现在看下在jsp中如何调用这个存储过程,如果使用mvc结构可以把相关代码提到业务逻辑层,这里为了方便展示就直接写在一起了
<%@ page language="java" import="java.sql.*,java.util.*" pageEncoding="gbk"%> <%@page import="oracle.jdbc.OracleTypes"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String pageNowStr=request.getParameter("pageNow"); //当前是第几页 int pageNow=1; if(pageNowStr!=null){ pageNow=Integer.valueOf(pageNowStr); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <table border="1"> <%//这些代码可以移到业务逻辑成 Connection conn=null; CallableStatement cs=null; ResultSet result=null; int pageCount=0; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } int pageSize=3; //每页多少条记录 try { String sql="{call sp_fengye(?,?,?,?,?,?)}"; cs=conn.prepareCall(sql); cs.setInt(1,pageNow); //注册当前页数 cs.setInt(2,pageSize); //注册每页多少条记录 cs.setString(3,"dept"); //注册要查询的表 cs.setString(4,"order by deptno desc"); //注册排序条件 cs.registerOutParameter(5,oracle.jdbc.OracleTypes.NUMBER); //注册返回值,总共分了多少页 cs.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR); //注册返回值,当前页的所有记录 cs.execute(); pageCount=cs.getInt(5); //获取总共分了多少条记录 // System.out.println("pageCount"+pageCount); result=(ResultSet)cs.getObject(6); while(result.next()){ //循环取出当前页的记录 out.print("<tr><td>"+result.getInt(1)+"</td><td>"+ result.getString(2)+"</td></tr>"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ result.close(); cs.close(); conn.close(); } %> </table> <% if(pageNow!=1){ out.print("<a href=oracleProcedureFengye.jsp?pageNow="+(pageNow-1)+">上一页</a> "); } for(int i=pageNow;i<pageNow+3;i++){ if(i<=pageCount) //使其不超过总页数 out.print("<a href=oracleProcedureFengye.jsp?pageNow="+i+">"+i+"</a> "); } if(pageNow<pageCount) out.print("<a href=oracleProcedureFengye.jsp?pageNow="+(pageNow+1)+">下一页</a>"); %> <br> </body> </html>
运行结果如下
发表评论
-
oracle的dos启动命令
2012-05-23 10:48 1243每次启动oracle时都需要启动监听和实例,但是通过点击控 ... -
java连接数据库用的DBHelper
2012-02-24 17:15 11465import java.io.*; import java. ... -
毕业设计遇到的问题
2011-11-06 17:01 740dwr与hibernate集成时候,可能会产生很多莫名其妙的 ... -
oracle例外处理
2011-10-30 17:10 716例外分类 oracle将例外分为预定义例外,非预 ... -
pl/sql进阶
2011-10-30 00:01 909------------------------分页----- ... -
oracle pl/sql
2011-10-29 15:21 888pl/sql是什么? pl/s ... -
oracle索引
2011-10-29 01:58 987索引是用于加速数据存取的数据对象,合理的使用索 ... -
oracle数据库管理-数据字典
2011-10-28 01:46 901数据字典是oracle ... -
oracle数据库管理-数据库用户及备份和导入
2011-10-27 18:40 5163每个oracle数据库应该至少有一名数据库管理员(db ... -
jsp oracle分页与sqlserver分页
2011-10-27 16:05 1137先来个sqlserver分页 数据库很简单就一张表 表字段有: ... -
oracle事物
2011-10-26 14:43 813事物: 事物用于保证数据的一致性,他 ... -
oracle的一些小窍门语法
2011-10-26 12:15 6431.将旧表中的数据导入到一个新表中 create table ... -
oracle的分页与合并查询
2011-10-26 01:40 9971.orcale的分页 一共有三 ... -
oracle表的复杂查询
2011-10-25 11:27 767命名列的别名可以带as,也可以不带as,命名表的别名不能 带a ... -
oracle插入空值
2011-10-25 10:57 5772首先申明一点,空值和0是截然不同的两个概念 插入值时可以选 ... -
oracle表的简单查询
2011-10-25 01:07 1046desc emp显示emp表的结构 ... -
oracle表的创建与删除
2011-10-25 00:12 30151.表名和列名的命名规则 <1.长度不能超过30 ... -
oracle权限与角色
2011-10-24 22:39 707... -
sqlserver与orcale在数据库与用户的组织结构上的区别
2011-10-24 22:37 785... -
oracle文件操作命令spool以及显示和环境设置
2011-10-24 22:31 1846------spool文件操作命令------------ ...
相关推荐
在这个毕业设计项目中,我们主要探讨的是如何使用Java语言调用Oracle数据库的存储过程来实现分页功能,这在Web应用程序中非常常见,尤其是在处理大数据量时,为了提高用户体验,分页是一种有效的数据展示方式。...
以下是一个使用JDBC调用Oracle存储过程的示例: ```java CallableStatement cs = connection.prepareCall("{call page_pkg.get_paged_data(?,?,?)}"); cs.setInt(1, pageNum); // 设置页码 cs.setInt(2, pageSize);...
本主题聚焦于使用JSP和JDBC在Oracle数据库上实现真正的分页功能。在Web开发中,分页是提高用户体验的关键技术,尤其是在处理大量数据时,它能让用户更有效地浏览和查找所需信息。这里我们将深入探讨如何结合Java ...
### JSP与Oracle数据库分页显示技术解析 #### 一、概述 本文档介绍了一种基于JSP(Java Server Pages)结合Oracle数据库实现的数据分页显示方法。此方法利用了JDBC(Java Database Connectivity)2.0标准进行...
项目中的"pagination_4_Oracle"可能包含了Oracle分页的具体实现。 5. MySQL数据库分页:MySQL提供了LIMIT关键字,可以直接配合OFFSET实现分页查询。在Java中,通过调整LIMIT子句的参数即可实现不同页码的数据获取。...
本主题将深入探讨如何在JSP中利用数据库实现页面分页,并涉及存储过程、Servlet以及Oracle和MySQL数据库的分页策略。 首先,我们要理解JSP(JavaServer Pages)是一种基于Java的动态网页技术,它可以嵌入Java代码来...
在本项目中,我们主要探讨的是一个基于Struts2、JSP和Oracle 10g数据库的分页实现。这是一个适合初级开发者学习的实例,它展示了如何在实际应用中进行数据分页显示,同时保证了代码质量,所有的逻辑代码都是手写的,...
它可能包含一个自定义的JSP标签库(Tag Library),开发者可以通过在页面中引入这个库,然后调用特定的分页标签来实现分页功能。 6. **分页工具的使用**: 分页工具可能包含以下关键组件: - 分页参数:如当前...
5. **展示视图**:在JSP或FreeMarker等视图层,根据返回的分页数据渲染页面,展示每一页的内容,同时提供导航链接,让用户可以浏览其他页。 在Oracle数据库中,可以使用内置的SQL分页函数,如ROWNUM或ROW_NUMBER()...
本项目以"JSP连接ORACLE"为主题,意味着它展示了如何使用JSP与Oracle数据库进行通信,以便存储、检索或更新数据。Oracle数据库是企业级的数据库管理系统,广泛应用于各种规模的组织。 首先,要建立JSP与Oracle的...
在“ssh+oracle分页”这个主题中,我们将深入探讨如何利用这三个框架与Oracle数据库进行集成,并实现数据的分页显示。 1. **Struts框架**:Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。...
在这个新闻管理系统中,Oracle存储所有的新闻记录,并通过Hibernate提供的API进行数据操作。开发者需要编写合适的SQL查询和DDL语句,以建立适合应用需求的数据库结构。 综上所述,这个毕业设计项目是一个典型的Java...
本教程"jsp+jdbc_oracle增删改查过滤分页排序"旨在帮助初学者掌握如何利用JSP与Oracle数据库进行数据操作,包括增、删、改、查以及查询结果的过滤、分页和排序。 首先,我们需要理解JDBC(Java Database ...
在Servlet中,我们可以处理HTTP请求,接收参数(如当前页数、每页大小),并调用服务方法获取分页数据,然后将结果传递给JSP页面进行渲染。 在JSP页面上,使用EL(Expression Language)和JSTL(JavaServer Pages ...
4. Servlet或JavaBeans处理:创建一个Servlet或JavaBean,接收JSP页面传递的数据,进行必要的验证和处理,然后调用Oracle的SQL接口进行数据的存储。 5. 显示结果:`display_messages.jsp`通过执行SQL查询从数据库中...
最后,通过JSP调用Oracle的存储过程,可以封装复杂的业务逻辑或数据库操作,提升性能。 在学习这两个章节的过程中,你将了解到如何设计和实现用户交互界面,如何处理用户输入,以及如何高效安全地与Oracle数据库...
这里,`doGet()`方法接收用户请求,调用`PageBean`和`ContactBean`处理分页逻辑,然后将数据存储到session,并重定向至JSP页面。 #### 五、结论 通过以上分析,我们可以看到,在MVC架构中,JSP与Servlet协同工作...
"Ibatis连接Oracle的分页"是指利用Ibatis作为数据访问层,与Oracle数据库进行交互,并实现了分页查询功能。Oracle数据库支持多种分页方式,如ROWNUM伪列、ROWNUM配合子查询、ROW_NUMBER()窗口函数等。在这个项目中,...
在分页场景中,`jsp`通常用于接收用户的请求参数(如当前页码),并调用后台服务来获取对应的数据。 `Hibernate`则是一个强大的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。通过`Hibernate`,...
在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们通常会将数据分批加载,这就是所谓的“分页”。Java作为一种常用的后端开发语言,提供了多种方式来实现对Oracle...