java调用参数为数组的存储过程


java调用参数为数组的存储过程,主要是能正确的把java的数组类型转化为oracle能识别的的数组类型,这一步网上的例子很多,也就不多说了。在最初做这个的时候发现,当传入数字数组的时候,数组里的值能正确的插入到数据库中,但是其他类型的数组却无法插入,程序也不报错,后来查了很久,乱搞一通,发现了问题所在,先写在这里,也算是个经验……

oracle程序:

先创建一个数组类型和一个测试表

create or replace  varchar_array as table of varchar2(100)

create table test(

  ID   NUMBER(10),

  NAME VARCHAR2(100)

)

存储过程:

create or replace procedure P_VARCHAR2(

    i_varchar IN varchar_array

    )

is

begin

  

    FOR i in 1..i_varchar.count loop 

        insert into test values (i,i_varchar(i));

    end loop;

end;

java程序:

前面的获取连接什么的就不写了,主要写数据转换的

con = DBConnection.getConn();

// 创建一个数组描述符,varchar_array 为你在数据库定义的数组类型的名字

ArrayDescriptor varchar2Desc = ArrayDescriptor.createDescriptor(

"varchar_array ", con);

 


 

String [] str={"1","2","3"};

// 将字符串数组转换为oralce能识别的数组

ARRAY vArray = new ARRAY(varchar2Desc, con, str);

cstmt = con.prepareCall(P_VARCHAR2);

cstmt.setArray(1, vArray);

cstmt.execute();

这样写程序没什么问题,需要注意的是程序使用的jdbc jar包,jar包不合适的话数据就无法插入,这里我使用的是ojdbc14.jar(之前ojdbc5.jar,ojdbc6.jar都不行),另外要注意的是项目必须导入另一个包nls_charset12.jar,主要是oracle对字符集的支持。ojdbc14+ nls_charset12就没什么问题了。

个人意见,暂且留在这里做个参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值