您好,欢迎访问三七文档
信息采集系统模块功能:1.录入员工信息,并写入到数据库注意事项:A.使用存储过程实现B.录入数据项为员工姓名,员工岗位,上级领导,雇佣日期,工资,奖金C.上级领导页面选择为领导人员姓名,保存值应为编号D.员工编号采用自动生成的sequenceE.将数据写入到Scott用户下的EMP表中F:动态SQL语句采用”ExecuteIMMEDIATE”执行自动备份系统模块功能1.使用线程在每日指定时间导出EMP表中的数据,并写入到新的表中,新表的命名方式采用:EMP+日期+时间,如MP2006083002022;2.将导入的数据记录数写入到日志文件中3.每个月最后一天,自动删除前一个月备份的所有的表(从USER_TABLES中可以得到当前用户拥有的表).注意事项:A:使用线程时要注意,在线程被启动后要执行Thread.sleep()方法,保证该操作不会被执行多次.附:存储过程调用方式:packageorg.neworiental.dao;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;importoracle.jdbc.OracleTypes;/***本类为存储过程的调用类*提供了调用存储过程的接口方法:*1.Object[]process(StringprocedureName,intoutlen)*2.Object[]process(StringprocedureName,Object[]in)*3.Object[]process(StringprocedureName,Object[]in,intoutlen)*说明:1.无输入值2.无输出3.输入输出均有*并演示了存储过程方法的调用方式*在本类中,process()方法为外部接口方法*客户端在调用时需要选择三个参数:*1.procedureName:存储过程名字*2.in:输入参数数组*3.out:输出参数个数*该方法返回输出内容,客户端可以提取给Object[]数组中的值*其他方法为辅助方法,不对客户端公布.*调用方式:Object[]obj=newObject[1];//输入参数数组定义obj[0]=newInteger(7499);//输入参数值intout=1;//输出参数参数,注意输出参数均为varchar2类型Object[]o=ProcedureMgr.process(GETINFO,obj,out);//调用GETINFO,GETINFO定义见类注释System.out.println(o[0]);//打印out出的值,这里取第一个*附:示例中用到的存储过程GETINFO:CREATEORREPLACEPROCEDUREGETINFO(NUMNUMBER,UNAMEOUTVARCHAR2)ASBEGINSELECTENAMEINTOUNAMEFROMEMPWHEREEMPNO=NUM;END;**@authorxdfmichael*2006.8.30*/publicclassProcedureMgr{//常量定义privatestaticfinalStringURL=jdbc:oracle:thin:@127.0.0.1:1521:XDF;//URL连接串privatestaticfinalStringUSERNAME=scott;//用户名privatestaticfinalStringPASSWORD=tiger;//密码/***获取数据库连接*@returnconnection*/privateConnectiongetConnection()throwsException{Class.forName(oracle.jdbc.driver.OracleDriver);//1.声明驱动Connectionconn=DriverManager.getConnection(URL,USERNAME,PASSWORD);//2.获取连接returnconn;}/***重载process方法*本方法负责处理无输入参数的存储过程调用*如果无输入参数,可以直接调用本函数*@paramprocedureName:存储过程名称*@paramoutlen:输出参数长度*@return:返回process(procedureName,in,outlen)调用结果*/publicstaticObject[]process(StringprocedureName,intoutlen){Object[]in=null;if(in==null){in=newObject[0];}returnprocess(procedureName,in,outlen);}/***重载process方法*本方法负责处理无输入参数的存储过程调用*如果无输出参数,可以直接调用本函数*@paramprocedureName:存储过程名称*@paramin:输入参数数组*@return:返回process(procedureName,in,outlen)调用结果*/publicstaticObject[]process(StringprocedureName,Object[]in){intoutlen=0;returnprocess(procedureName,in,outlen);}/***类方法,直接通过类名调用*要求存储过程的输入参数在前,输出参数在后*参数的输出类型均为字符串*@paramprocedureName:存储过程名字*@paramin:输入参数数组*@paramout:输出参数个数*@throwsException*/publicstaticObject[]process(StringprocedureName,Object[]in,intoutlen){try{ProcedureMgrpm=newProcedureMgr();Connectioncon=pm.getConnection();//获取数据库连接intlen=in.length;StringstrProcedure=pm.getProcedureStr(procedureName,len,outlen);//获取存储过程调用串CallableStatementcst=con.prepareCall(strProcedure);//加载存储过程pm.setParameter(cst,in,outlen);//设置参数cst.executeQuery();//执行存储过程调用returnpm.getObjects(cst,len,outlen);}catch(Exceptione){e.printStackTrace();returnnull;}}/***从CallableStatement获取所有执行结果*封装到Object数组中并返回*客户端只需要根据下标从该数组中直接提取即可,元素下标从0开始*@paramcst:CallableStatement*@paraminlen:输入参数长度*@paramoutlen:输出参数长度*@return:返回包含了存储过程out值的Object数组*@throwsException:异常交给调用者处理*/publicObject[]getObjects(CallableStatementcst,intinlen,intoutlen)throwsException{//获取执行后的输出结果Object[]obj=newObject[outlen];for(intk=0;koutlen;k++){obj[k]=cst.getObject(inlen+1+k);//inlen+1表示out参数设置位置}returnobj;}/***获取连接字符串*@paramprocedureName:存储过程名称*@paramin:输入参数长度*@paramoutlen:输出参数的长度*@return:存储过程调用串*/privateStringgetProcedureStr(StringprocedureName,intinlen,intoutlen){StringBuffers=newStringBuffer({call+procedureName+();for(inti=0;iinlen;i++){s.append(?,);}for(intj=0;joutlen;j++){s.append(?,);}Stringstr=s.substring(0,s.length()-1);//截取掉最后一个,符号str=str+)};System.out.println(str);returnstr;}/***设置输入参数,下标从1开始*/privatevoidsetParameter(CallableStatementcst,Object[]in,intoutlen)throwsException{intindex=1;for(inti=0;iin.length;i++){cst.setObject(index,in[i]);index++;}for(intj=0;joutlen;j++){//输出类型,如果out的参数类型为NUMBER或其他类型,需要使用转换函数cst.registerOutParameter(index,OracleTypes.VARCHAR);index++;}}/***测试方法*@paramargs*/publicstaticvoidmain(String[]args){try{Object[]obj=newObject[2];//输入参数数组定义obj[0]=newInteger(7499);//输入参数值intout=1;//输出参数参数,注意输出参数均为varchar2类型Object[]o=ProcedureMgr.process(GETINFO,obj,out);//调用GETINFO,GETINFO定义见类注释//System.out.println(o[0]);//打印out出的值,这里取第一个}catch(Exceptione){e.printStackTrace();}}}本文档结束!
本文标题:Oracle项目
链接地址:https://www.777doc.com/doc-13234 .html