4

構造が次のようなORACLEテーブルがあります

desc extraction_log1
           Name                           Null                        
                                                     Type                                                                                                                                                                                          

 ------------------------------ -------- ------------------------------------------------------------     ----------------------------------------------------------------------------------------------------      ----------------------------- 
 ROW_NUM                        NOT NULL            NUMBER                                                                                                                                                                                        
DATE_TIME                                        TIMESTAMP(8)                                                                                                                                                                                  
USER_NAME                                         VARCHAR2(32)                                                                                                                                                                                  
PLATFORM_NAME                                      VARCHAR2(20)                                                                                                                                                                                  
R_OBJECT_ID                                       VARCHAR2(16)   

次に、Oracleでオブジェクトタイプを作成しました。

create or replace type EXTRACTION_LOG_TYPE as object    (          

 USER_NAME VARCHAR2(32), 
 R_OBJECT_ID VARCHAR2(16), 

  );

次に、パッケージにプロシージャを作成しました。

create or replace package body PAC_BEAN is 
  --The insert procedure will receive EXTRACTION_LOG_TYPE and put it into table EXTRACTION_LOG1.  

   procedure PRO_INSERT_LOG(ELT in EXTRACTION_LOG_TYPE) is 

   begin 

      insert into EXTRACTION_LOG1 ( R_OBJECT_ID, USER_NAME)
           values (ELT.R_OBJECT_ID, ELT.USER_NAME);  

      commit;  

 exception  

  when others then 
    rollback;  

  end PRO_INSERT_LOG;  
  end PAC_BEAN; 

そして私のJava側に来て、私はBeanを宣言しました

public class ExtractionLogType {        
        //Name declared in Oracle        
   public static final String ORACLE_OBJECT_NAME = "EXTRACTION_LOG_TYPE";            
   //The attributes        
  private String  R_OBJECT_ID;        
  private String USER_NAME;      
  //setters and getters      
  public  String getR_OBJECT_ID() {
    return R_OBJECT_ID;
  }
  public  void setR_OBJECT_ID(String rOBJECTID) {
    R_OBJECT_ID = rOBJECTID;
    }
  public  String getUSER_NAME() {
    return USER_NAME;
   }
  public  void setUSER_NAME(String uSERNAME) {
    USER_NAME = uSERNAME;
   }


            } 

メインを含む私のクラスで

               import java.sql.CallableStatement;
               import java.sql.Connection;
                 import java.sql.DriverManager;
               import java.sql.SQLException;

            public class DBLogger{     
          String dbUrl;     
        Connection con;      
     //constructor for creation of  connection object 
        as and when an object of DBLogger is instantiated     
        public DBLogger(){           
    dbUrl = "jdbc:oracle:thin@my url";        
         try {             
        //load Oracle Driver class             
        Class.forName("oracle.jdbc.driver.OracleDriver");     
        } catch (ClassNotFoundException e) {         
            e.printStackTrace();         
            System.err.println("Oracle driver class not found");       
            }      
        try {         
            //instantiate connection object       
            con = DriverManager.getConnectio (dbUrl,"userId","pwd");                
            } catch (SQLException e) {      
                e.printStackTrace();                       
              System.err.println("Connection object to oracle cant be established");   
                }    
            } 
        public static void main(String args[]){  
     try{
    DBLogger db=new DBLogger();        
    CallableStatement cs = null;        
    ExtractionLogType elt=new  ExtractionLogType();         
    elt.setR_OBJECT_ID("79479479A900");       
    elt.setUSER_NAME("Jeevan");               
    cs = db.con.prepareCall("{call PAC_BEAN.PRO_INSERT_LOG(?)}");                
    /*                     
     * *code to insert the above object into our Database               
     *       
    */
    cs.execute();           
    System.out.println("insert procedure executed successfully");                  
    db.con.close();      
    }  //end try  
catch (SQLException e) {      
    e.printStackTrace();   }     
catch(Exception e) {             e.printStackTrace();        
}   
}

       }         

オブジェクトをデータベースに挿入するためのコードがわかりません。
誰かがこれに関して私に提案できますか?

ありがとうございました。

4

2 に答える 2

0

データベースタイプの配列記述子を定義する必要があります。この例は次の場合に役立ちます。

final ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("EXTRACTION_LOG_TYPE", con);
// create an Object Array
Object[] data = new Object[2];
// set the values in order of appearance
data[0] = elt.getUSER_NAME();
data[1] = elt.getR_OBJECT_ID();
// Create the Array
ARRAY array = new ARRAY(descriptor, con, data);
// put it on your statement
cs.setArray(1, array);
// execute ...
于 2012-05-30T07:32:14.200 に答える