您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页Oracle项目

Oracle项目

来源:化拓教育网


信息采集系统

模块功能:

1.录入员工信息,并写入到数据库 注意事项:

A.使用存储过程实现

B.录入数据项为员工姓名,员工岗位,上级领导,雇佣日期,工资,奖金 C.上级领导页面选择为领导人员姓名,保存值应为编号 D.员工编号采用自动生成的sequence E.将数据写入到Scott用户下的EMP表中

F:动态SQL语句采用”Execute IMMEDIATE”执行

自动备份系统

模块功能

1.使用线程在每日指定时间导出EMP表中的数据,并写入到新的表中,新表的命名方式采用:EMP+日期+时间,如MP2006083002022; 2.将导入的数据记录数写入到日志文件中

3.每个月最后一天,自动删除前一个月备份的所有的表(从USER_TABLES中可以得到当前用户拥有的表). 注意事项:

A:使用线程时要注意,在线程被启动后要执行Thread.sleep()方法,保证该操作不会被执行多次.

附:存储过程调用方式:

package org.neworiental.dao;

import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import oracle.jdbc.OracleTypes; /**

* 本类为存储过程的调用类

* 提供了调用存储过程的接口方法:

* 1.Object[] process(String procedureName,int outlen) * 2.Object[] process(String procedureName,Object[] in)

* 3.Object[] process(String procedureName,Object[] in,int outlen) * 说明:1.无输入值 2.无输出 3.输入输出均有 * 并演示了存储过程方法的调用方式

* 在本类中,process()方法为外部接口方法 * 客户端在调用时需要选择三个参数: * 1.procedureName:存储过程名字 * 2.in:输入参数数组 * 3.out:输出参数个数

* 该方法返回输出内容,客户端可以提取给Object[]数组中的值 * 其他方法为辅助方法,不对客户端公布. * 调用方式:

Object[] obj = new Object[1]; //输入参数数组定义 obj[0] = new Integer(7499); //输入参数值

int out = 1; //输出参数参数,注意输出参数均为varchar2类型 Object[] o = ProcedureMgr.process(\"GETINFO\调用GETINFO,GETINFO定义见类注释

System.out.println(o[0]); //打印out出的值,这里取第一个

* 附:示例中用到的存储过程GETINFO:

CREATE OR REPLACE PROCEDURE GETINFO( NUM NUMBER,UNAME OUT VARCHAR2 ) AS BEGIN

SELECT ENAME INTO UNAME FROM EMP WHERE EMPNO=NUM; END; *

* @author xdf michael * 2006.8.30 */

public class ProcedureMgr { //常量定义

private static final String URL=\"jdbc:oracle:thin:@127.0.0.1:1521:XDF\";//URL连接串

private static final String USERNAME=\"scott\";//用户名 private static final String PASSWORD=\"tiger\";//密码 /**

* 获取数据库连接 * @return connection */

private Connection getConnection() throws Exception{

Class.forName(\"oracle.jdbc.driver.OracleDriver\");//1.声明驱动 Connection conn = DriverManager.getConnection(URL, USERNAME,PASSWORD); //2.获取连接 return conn; } /**

* 重载process方法

* 本方法负责处理无输入参数的存储过程调用 * 如果无输入参数,可以直接调用本函数 * @param procedureName:存储过程名称 * @param outlen:输出参数长度

* @return:返回process(procedureName,in,outlen)调用结果 */

public static Object[] process(String procedureName,int outlen){ Object[] in = null; if(in==null){

in = new Object[0]; }

return process(procedureName,in,outlen); }

/**

* 重载process方法

* 本方法负责处理无输入参数的存储过程调用 * 如果无输出参数,可以直接调用本函数 * @param procedureName:存储过程名称 * @param in:输入参数数组

* @return:返回process(procedureName,in,outlen)调用结果

*/

public static Object[] process(String procedureName,Object[] in){ int outlen = 0;

return process(procedureName,in,outlen); } /**

* 类方法,直接通过类名调用

* 要求存储过程的输入参数在前,输出参数在后 * 参数的输出类型均为字符串

* @param procedureName:存储过程名字 * @param in:输入参数数组 * @param out:输出参数个数 * @throws Exception */

public static Object[] process(String procedureName,Object[] in,int outlen){ try{

ProcedureMgr pm = new ProcedureMgr();

Connection con = pm.getConnection(); //获取数据库连接

int len = in.length; String strProcedure =pm.getProcedureStr(procedureName,len,outlen);//获取存储过程调用串

CallableStatement cst = con.prepareCall(strProcedure);//加载存储过程

pm.setParameter(cst,in,outlen); //设置参数 cst.executeQuery(); //执行存储过程调用

return pm.getObjects(cst,len,outlen); }catch(Exception e){ e.printStackTrace(); return null; } } /**

* 从CallableStatement获取所有执行结果 * 封装到Object数组中并返回

* 客户端只需要根据下标从该数组中直接提取即可,元素下标从0开始 * @param cst:CallableStatement * @param inlen:输入参数长度 * @param outlen:输出参数长度

* @return :返回包含了存储过程out值的Object数组 * @throws Exception:异常交给调用者处理 */

public Object[] getObjects(CallableStatement cst,int inlen, int outlen) throws Exception{ //获取执行后的输出结果

Object[] obj = new Object[outlen]; for(int k=0;kobj[k] = cst.getObject(inlen+1+k); //inlen+1表示out参数设置位置 }

return obj; } /**

* 获取连接字符串

* @param procedureName:存储过程名称 * @param in:输入参数长度

* @param outlen:输出参数的长度 * @return:存储过程调用串 */

private String getProcedureStr(String procedureName,int inlen,int outlen){ StringBuffer s = new StringBuffer(\"{call \"+procedureName+\"(\"); for(int i=0;ifor(int j=0;jString str = s.substring(0,s.length()-1); //截取掉最后一个,符号 str = str +\")}\";

System.out.println(str); return str; } /**

* 设置输入参数,下标从1开始 */

private void setParameter(CallableStatement cst,Object[] in,int outlen) throws Exception{

int index =1;

for(int i=0;ifor(int j=0;j//输出类型,如果out的参数类型为NUMBER或其他类型,需要使用转换函数 cst.registerOutParameter(index,OracleTypes.VARCHAR); index++; } } /**

* 测试方法 * @param args */

public static void main(String[] args) { try{

Object[] obj = new Object[2]; //输入参数数组定义 obj[0] = new Integer(7499); //输入参数值

int out = 1; //输出参数参数,注意输出参数均为varchar2类型 Object[] o = ProcedureMgr.process(\"GETINFO\ //调用GETINFO,GETINFO定义见类注释

//System.out.println(o[0]); //打印out出的值,这里取第一个 }catch(Exception e){ e.printStackTrace(); } } }

本文档结束!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务