用Java实现Oracle数据库增删集合元素

22 篇文章 0 订阅

Oracle数据库中增删集合元素的操作该如何实现呢?其实利用Java Function就可以轻松的实现,本文我们就主要介绍这一实现方法。

  源程序如下:以下是代码片段:

 import java.math.BigDecimal;
  import java.sql.Array;
  //import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.SQLException;
  import java.util.ArrayList;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  import oracle.jdbc.*;
  import oracle.sql.ARRAY;
  import oracle.sql.ArrayDescriptor; public class OraTools {
  static public Array addElementOfArray(ARRAY ary, Object e){
  try {
  Object[] bigs = null;
  if(ary==null) bigs = new Object[0];
  else bigs = (Object[]) ary.getArray();
  for(int i=0; i
  if(e.equals(bigs[i])){ return ary; }
  Object[] objs = new Object[bigs.length+1];
  for(int i=0; i
  objs[objs.length-1] = e;
  OracleConnection conn = (OracleConnection) DriverManager.getConnection("jdbc:default:connection:");
  //((OracleConnection)conn.unwrap(OracleConnection.class))
  //Array arr = conn.createARRAY(typeName.toUpperCase(), objs ); //11g r1
  Array arr = new ARRAY(ArrayDescriptor.createDescriptor( ary.getSQLTypeName(), conn), conn, objs);
  return arr;
  } catch (SQLException ex) {
  //Logger.getLogger(OraTools.class.getName())。log(Level.SEVERE, null, ex);
  System.err.println("ERROR! addElementOfVarray: " + ex.getMessage());
  return ary; } static public Array delElementOfArray(ARRAY ary, Object e){
  try {
  if( ary==null) return null;
  Object[] bigs = (Object[]) ary.getArray();
  ArrayList list = new ArrayList(bigs.length);
  for(int i=0; i
  if( ! e.equals(bigs[i])){ list.add(bigs[i]); }
  if(list.size()==bigs.length) return ary;
  Object[] objs = list.toArray();
  OracleConnection conn = (OracleConnection) DriverManager.getConnection("jdbc:default:connection:");
  //Array arr = conn.createARRAY(typeName.toUpperCase(), objs ); //11g r1
  Array arr = new ARRAY(ArrayDescriptor.createDescriptor(ary.getSQLTypeName(), conn), conn, objs);
  return arr;
  } catch (SQLException ex) {
  System.err.println("ERROR! addElementOfVarray: " + ex.getMessage());
  return ary; }
  }
  然后发布:loadjava -f -v -user username/passwd -r OraTools.java建call spec:以下是代码片段:

CREATE OR REPLACE function addElementOfInt_nt(ary int_nt, dept_id NUMBER)
  return int_nt AS LANGUAGE JAVA NAME 'zgdx.action.OraTools.addElementOfArray(java.sql.Array, java.lang.Object)
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值