我做了一个数据结构T,在内存区用vector<T*>存储,但是需要定时批量的把vector里的数据写入数据库,本来用可以把vector里的数据一条条写入数据库,但是可能每次都要进行IO操作,影响效率,所以用存储过程,但是不知道怎么把vector的东西转化成一个数据集作为参数传给存储过程,请教了

解决方案 »

  1.   

    你数据从哪儿来的呢,从界面输入的?
    一次输入一批数据吗?(一般界面一条一条提交的)
    如果那一批数据是从数据库取的,加工之后再存入数据库的话
    建议直接用存储过程加工并保存。参考:
    SQL> desc aa
     Name                                      Null?    Type
     ----------------------------------------- -------- ---------------------
     NAME                                               VARCHAR2(10)SQL> truncate table aa;Table truncated.SQL> select * from aa;no rows selectedSQL> create or replace type ARR as table of VARCHAR2(200) NOT NULL;
    /create or replace procedure give_me_an_array(myArray arr)
    as
    begin
      forall i in myArray.first..myArray.last
      insert into aa values(myArray(i));
      COMMIT;
    end;
    /import java.sql.*;
    import java.util.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.*;public class test
    {
        public static void main(String args[]) throws Exception
        {
            DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            Connection conn = DriverManager.getConnection(
                     "jdbc.oracle:thin:@192.168.1.1:1521:orcl","username","password");
            String a[]={"3","2","abc"};
            ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("ARR",conn);
            ARRAY array_to_pass = new ARRAY(descriptor,conn,a);
          OraclePreparedStatement ps = (OraclePreparedStatement)conn.prepareStatement
                                               ("begin give_me_an_array(:x); end;");
          ps.setARRAY( 1, array_to_pass );
          ps.execute();
        }
    }e:javac test.javae:java testSQL> select * from aa;NAME
    ----------
    3
    2
    abc3 rows selected.
      

  2.   

    大哥,我现在的问题是怎么把vector里的数据转换成可以被存储过程参数或者游标能够识别的形式,一次性的批量写入数据库
    数据不是从别的数据表里导出来的数据集
      

  3.   

    这儿有一个ArrayList的例子,和Vector差不多(JAVA建议用ArrayList,Vector类已废弃,
    保留Vector只是为了兼容)
    http://blog.csdn.net/a9529lty/archive/2008/12/11/3500849.aspx
      

  4.   

    http://topic.csdn.net/u/20100310/15/7f83d565-4406-4193-9e09-5738a98745d8.html