oracle插入数据问题

因为个人原因导致账号zilang629丢失。。。上不去了,没办法,重新注册了个账号~然后本账号因为一时手痒,爬了下12306,封号了,所以今天才慢慢更新,不过为工作人员点赞,昨天发的申请今天就弄好了。

当初工作的时候,需要大量的手机号,移动、联通、电信的都有,应该是整个省的电话号了,只要旅游漫游到一个地方,就发当地的特色信息,应该是这么个业务。当时的问题就是怎么处理好这些电话号,1个小时更新一次,数据量绝对刺激。每次处理10个文件,每个文件20MB左右,录入都是个问题。最后我采用了这个办法解决了问题。

通过当时的工作让我明白数据库的问题就好交给数据库去做。

create or replace type v_varchar is table of nvarchar2(15);

create or replace procedure InsSell(
v_CHARGING in v_varchar,
v_ADDRESS_LOCAL in v_varchar,
v_ADDRESS_REMOTE in v_varchar)
as
 i integer;
begin
 for i in 1..v_CHARGING.count loop
   INSERT INTO DX_MMS_AREAINFO (ID,CHARGING,ADDRESS_LOCAL,ADDRESS_REMOTE) VALUES(SEQ_MMS_AREAINFO.NEXTVAL,v_CHARGING(i),v_ADDRESS_LOCAL(i),v_ADDRESS_REMOTE(i));
 end loop;
 DELETE FROM DX_MMS_AREAINFO M WHERE M.ROWID > (SELECT MIN(T.ROWID) FROM DX_MMS_AREAINFO T WHERE M.CHARGING=T.CHARGING);
end InsSell;


以上是数据库的存储过程,很简单,循环插入数据到一个临时表中,然后和用户表比较,看看用户现在的状态,是不是已经回来本地了。然后删除临时表中的数据。(时间久远记不住了)

然后java代码

public void insertintoareainfo(List list) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
        GetConn getConn = new GetConn();
        Connection con = getConn.getConn();
        oracle.sql.ArrayDescriptor a_id = null;
        oracle.sql.ArrayDescriptor a_ticketid = null;
        oracle.sql.ArrayDescriptor a_name = null;
        oracle.sql.ArrayDescriptor a_age = null;
        Object[] s_id = new Object[list.size()];
        Object[] s_ticketid = new Object[list.size()];
        Object[] s_name = new Object[list.size()];
        for (int i = 0; i < list.size(); i++) {
            NumberAddress num = (NumberAddress) list.get(i);
            s_id[i] = new String(num.getNumPhone());
            s_ticketid[i]=new String(num.getNumBelong());
            s_name[i]=new String(num.getNumRoam());
        }
        try {
            oracle.sql.ArrayDescriptor a_nvarchar =ArrayDescriptor.createDescriptor("V_VARCHAR", con);//一定要大写
            ARRAY id_test = new ARRAY(a_nvarchar, con, s_id);
            ARRAY ticketid_test = new ARRAY(a_nvarchar, con, s_ticketid);
            ARRAY name_test = new ARRAY(a_nvarchar, con, s_name);
            CallableStatement cstmt = con.prepareCall("{call InsSell(?,?,?)}");
            cstmt.setArray(1, id_test);
            cstmt.setArray(2, ticketid_test);
            cstmt.setArray(3, name_test);
            cstmt.execute();
            con.commit();
            
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Insert into DB error: " + e.getMessage());
        }
    }


博客搬家,也需要写点新东西出来,晚点的时候写个验证码识别的,和图像对比的代码~如果博主不懒的话。

以上为搬家内容。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值