`

结合案例

阅读更多

表的建立sql
create table mytest(name varchar2(50),passwrd varchar2(50),id number);

1 序列
  create sequence seq_id
  increment by 1
  start with 1
  nomaxvalue;

2 触发器的建立
  create or replace trigger tri_id   --添加用户时自动加入用户id
  before insert on mytest
  for each row
  declare new_key number;
  begin
  select seq_id.nextval into new_key from dual;
  :new.id:=new_key;
  end;

3 创建一个包,在该包中,我定义类型test_cursor,是游标
 create or replace package testpackage as
 type test_cursor is ref cursor;
 end testpackage;

4 创建过程
 //获取数据
 create or replace procedure get_data
 (sid in number,p_cursor out testpackage.test_cursor) is
 begin
 open p_cursor for select * from mytest where id=sid;
 end;
 
 //根据所输入的表名,查询显示所有数据
 create or replace procedure list_data
 (tableName in varchar2,p_cursor out testpackage.test_cursor) is
 v_sql varchar2(100);
 begin
   v_sql:='select * from ' || tableName;  
 open p_cursor for  v_sql;
 end;
 
 //分页显示数据
 create or replace procedure pagaInfo
 (tableName in varchar2,
 Pagesize in number,--一页显示记录数
 pageNow in number,
 myrows out number,--总记录数
 myPageCount out number,--总页数
 p_cursor out testpackage.test_cursor --返回的记录集
 ) is
 --定义部分
 --定义sql语句 字符串
 v_sql varchar2(1000);
 --定义两个整数
 v_begin number:=(pageNow-1)*Pagesize+1;
 v_end number:=pageNow*Pagesize;
 begin
 --执行部分
 v_sql:='select * from (select t1.*,rownum rn from (select * from '|| tableName
 ||') t1 where rownum<='|| v_end ||') where rn>='|| v_begin;
 open p_cursor for v_sql;
 --计算myrows和myPageCount
 --组织一个sql
 v_sql:='select count(*) from '||tableName;
 --执行sql,并把返回的值 ,赋给myrows;
 execute immediate v_sql into myrows;
 --计算myPageCount
 if mod(myrows,Pagesize)=0 then
 myPageCount:=myrows/Pagesize;
 else
 myPageCount:=myrows/Pagesize+1;
 end if;
 --关闭游标
 --close p_cursor;
 end;

package com;

/*
 * 
 * 
 */
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

import org.eclipse.jdt.internal.compiler.ast.ThisReference;

public class testOracle {
	public static void main(String argsp[]) throws Exception{
		//insert_data("g", "g");
		//get_data(new Integer(2));
		//list_data("mytest");
		PageList_data("");
	}
	
	//get data
	public static void get_data(int number) throws Exception{
		Connection conn = getOracle();
		CallableStatement cs = conn.prepareCall("{call get_data(?,?)}");
		cs.setInt(1, number);
		cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
		cs.execute();
		
		ResultSet rs = (ResultSet)cs.getObject(2);
		while(rs.next()){
			System.out.println("id:"+rs.getString("id")+"||"+"name:"+rs.getString("name")+"|| passwrd:"+rs.getString("passwrd"));
			
		}
	}
	
	//list data
	public static void list_data(String dataString) throws Exception{
		Connection conn = getOracle();
		CallableStatement cs = conn.prepareCall("{call list_data(?,?)}");
		cs.setString(1, dataString);
		cs.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
		cs.execute();
		ResultSet rs = (ResultSet)cs.getObject(2);
		while(rs.next()){
			System.out.println("id:"+rs.getString("id")+"||"+"name:"+rs.getString("name")+"|| passwrd:"+rs.getString("passwrd"));

		}
	}
	
	//pageList data
	public static void PageList_data(String dataString) throws Exception{
		Connection conn = getOracle();
		CallableStatement cs = conn.prepareCall("call pagaInfo(?,?,?,?,?,?)");
		cs.setString(1, "emp");
		cs.setInt(2, 5);
		cs.setInt(3, 1);
		cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
		cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
		cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
		cs.execute();
		int rowNum = cs.getInt(4);
		int pageCount = cs.getInt(5);
		ResultSet rs = (ResultSet)cs.getObject(6);
		System.out.println("rowNum"+rowNum);
		System.out.println("总页数:"+pageCount);
		while (rs.next()) {
			System.out.println("编号:"+rs.getInt(1)+"名字:"+rs.getString(2));
		}
	}
	
	//insert data
    public static void insert_data(String name,String passwrd) throws Exception{
    	Connection conn = getOracle();
		CallableStatement cs = conn.prepareCall("call insert_mytest(?,?)");
		cs.setString(1, name);
		cs.setString(2, passwrd);
		cs.execute();
	}
	
	//连接oracle数据库
	public static Connection getOracle() throws Exception{
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection conn =DriverManager.getConnection("jdbc:oracle:thin:@goby-server:1521:orcl","scott","tiger");
		//Connection conn=null;
		System.out.println("oracle成功接上啦!");
		return conn;
	}
}

 

分享到:
评论

相关推荐

    Ext与SSH结合案例

    【Ext与SSH结合案例】是将流行的前端JavaScript框架ExtJS与后端的Struts2、Hibernate集成,构建出高效、美观且功能丰富的Web应用程序。在这个案例中,ExtJS主要用于创建用户界面,提供卓越的交互性和视觉效果,而...

    结合案例分析如何激发学习动机.pdf

    本文通过结合案例分析,深入探讨了如何激发学生的学习动机,包括内在动机和外在动机的激发,以及教师在这一过程中的角色和策略。 首先,我们需要认识到学生的学习动机可以分为内在动机和外在动机两种类型。内在动机...

    【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within

    所以本系列就结合案例详细介绍@Aspect方式的切面的各种用法,力求覆盖日常开发中的各种场景。 上文我们已讲完五种通知Advice注解,所以从本文开始介绍@Pointcut切点表达式,虽然Spring AOP的切点表达式尚未 全部...

    【Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知

    所以本系列就结合案例详细介绍@Aspect方式的切面的各种用法,力求覆盖日常开发中的各种场景。本文带来的案例是:打印Log,主要介绍@Pointcut切点表达式的@annotation方式,以及 五种通知Advice注解:@Before、@After...

    商务谈判计划的制订结合案例分析的PPT.pptx

    商务谈判计划的制订结合案例分析的PPT.pptx

    04-字符串与数组结合案例.html

    04-字符串与数组结合案例

    ibatis入门详细教程(结合案例)

    来自网络,这里免费分享给大家。。ibatis入门详细教程(结合案例),本人看过值得一看

    结合案例教学提升《岩土工程勘察》课程工程能力培养质量

    案例教学在提升工程能力方面发挥着重要作用,它能够将理论知识与实践相结合,增强学生对专业理论的理解,提高他们分析和解决问题的能力。案例的选择应遵循几个关键原则:一是案例应具有代表性,能反映岩土工程勘察中...

    易语言与WEB结合案例视频教程

    资源介绍:。1、总则。2、HTML介绍。3、ASP介绍。...6、XML介绍。7、ASP实现在线校时。8、XML实现在线升级。...10、ASP结合实现注册在线验证。11、ASP结合实现软件与论坛一站式。资源作者:。@世恒。资源下载:。

    SQLite数据库和ListView列表结合案例

    Android Application Project源码,使用ListView显示数据库内容,并可对数据库内容进行增删改查,目前源码内gen文件夹为空,加载时可能会出错,所用知识点比较简单,可先安装apk试下效果

    读写结合,提高能力──《火烧云》教学案例.doc

    读写结合,提高能力──《火烧云》教学案例.doc

    结合Protues虚拟仿真“单片机”课程的案例教学方法研究.pdf

    文章还提到了一些结合案例教学法的具体实践,例如在“单片机原理及接口技术”课程中通过案例教学法来开展外部中断的教学内容,以及在“单片机应用技术”实验教学中引入“数字心率计”和“简易电子秤设计”两个案例,...

    短视频与电商结合的优秀案例.pdf

    本文将通过分析两个优秀的短视频与电商结合案例——Benny董子初和白眼先生 Jay Sin,来探讨如何利用短视频平台进行有效的产品推广和销售。 首先,我们来看Benny董子初的案例。作为一个以美妆为主题的短视频栏目,...

    C++开发实战小案例.zip

    在本压缩包“C++开发实战小案例.zip”中,主要包含了C++编程语言的实践应用案例,由知名教育机构传智播客和黑马...在学习过程中,建议结合案例的讲义说明,理解代码逻辑,同时注重代码注释的阅读,以提升自我学习效果。

    CPMP项目管理师案例分析

    在准备此类考试时,考生应深入了解PMBOK(项目管理知识体系指南)中的概念,同时结合案例练习,提高自己在实际项目中应用项目管理原则和工具的技能。通过案例分析,考生可以学习如何在压力下做出决策,如何有效地...

    软考高项按知识点汇总案例(包括案例说明+答案)

    【软考高项按知识点汇总案例(包括案例说明+答案)】 软考,全称为全国计算机技术与软件专业技术资格(水平)考试,是中国信息化...在复习过程中,考生应结合案例反复练习,不断巩固和提升自身的IT管理和技术水平。

    Visual Basic程序设计教学案例

    Visual Basic(简称VB)是一种由微软公司开发的事件驱动编程语言,主要用于Windows应用程序的开发。在本"Visual Basic程序设计教学案例"中,包含了...在课堂上,教师可以结合案例进行现场演示和讨论,以提高教学效果。

    信息系统项目管理师与工程师考试案例分析答题万金油.pdf

    在答题时,运用专业术语,结合案例具体情境,分析问题出现的原因,并提出改进建议。同时,要注重逻辑性和条理性,确保回答全面而深入。记住,每个案例都可从多个管理维度进行分析,如需求管理、风险管理、人力资源...

    软件工程参考文档和案例教程

    5. **课程设计**:结合案例学习软件工程,可以帮助学生将理论知识与实际操作相结合。案例教程可能包括实际项目场景,让学生模拟完成项目,从而提升分析、设计和解决问题的能力。 6. **案例研究**:案例研究是学习...

Global site tag (gtag.js) - Google Analytics