我做了一个数据结构T,在内存区用vector<T*>存储,但是需要定时批量的把vector里的数据写入数据库,本来用可以把vector里的数据一条条写入数据库,但是可能每次都要进行IO操作,影响效率,所以用存储过程,但是不知道怎么把vector的东西转化成一个数据集作为参数传给存储过程,请教了
------解决方案--------------------
你数据从哪儿来的呢,从界面输入的?
一次输入一批数据吗?(一般界面一条一条提交的)
如果那一批数据是从数据库取的,加工之后再存入数据库的话
建议直接用存储过程加工并保存。
参考:
- SQL code
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)asbegin 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----------32abc3 rows selected.
------解决方案--------------------
http://topic.csdn.net/u/20100310/15/7f83d565-4406-4193-9e09-5738a98745d8.html