2014년 1월 9일 목요일

JDBC OCI를 이용한 Array Test 예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]

 JDBC OCI를 이용한 Array Test 예제[재직자무료교육/프로그래머교육/구로디지털IT교육,오라클/자바/닷넷/C#/iOS/안드로이드/아이폰교육]


JDBC OCI를 이용한 Array Test 예제

1.        오라클 쪽에서 배열에 매핑되도록 TYPE을 하나 만듭니다.

create or replace type MYARRAY as table of number;

2.        아래와 같은 PL/SQL Procedure를 만듭니다. 이 프로시저를 자바 Application에서 호출하여 배열로 값을 넘겨줘 EMP TABLE에 데이터를 저장 하게 됩니다.

create or replace array_test( p_array in myarray )
as
begin
      for i in 1 .. p_array.count
      loop
          dbms_output.put_line( p_array(i) );
          insert into emp(empno, ename) values (p_array(i), 'È«±æµ¿'||to_char(p_array(i)));
          commit;
      end loop;
end;
/

3.        자바 애플리케이션을 만듭니다.(전 Eclipse에서 작성 했습니다.) 주석을 푼 방식으로도 실행해 보세요~ OCI Driver를 사용하기 위해서는 로컬에 SQL*Net이 설치 되어 있어야 합니다. 즉 오라클 클라이언트등이 설치되어야 겠죠… 저의 경우엔 노트북에 오라클 서버가 설치되어 있구요…

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

import oracle.jdbc.driver.OraclePreparedStatement;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;

public class OCIArrayTest
{
    public static void main(String[] args) {
           
            String driver = "oracle.jdbc.driver.OracleDriver";
        String url = "jdbc:oracle:oci8:@WINK";
        String user = "scott"; 
        String password = "tiger";
       
        Connection conn = null;
       
                try {
                        Class.forName(driver);
                conn = DriverManager.getConnection(url, user, password);
               
                    //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());               
                    //conn = DriverManager.getConnection("jdbc:oracle:oci8:@wink","scott", "tiger");
               
                    int intArray[] = { 10,9,8,77,65,26 };
               
                    ArrayDescriptor descriptor =  ArrayDescriptor.createDescriptor( "MYARRAY", conn );
               
                    ARRAY array_to_pass =  new ARRAY( descriptor, conn, intArray );
               
                    OraclePreparedStatement ps =
                            (OraclePreparedStatement)conn.prepareStatement( "begin array_test(:x); end;" );
               
                    ps.setARRAY( 1, array_to_pass );
               
                    ps.execute();
                   
                    System.out.println("OK~~~");
                }
                catch(Exception e) {
                    e.printStackTrace();
                }
    }

}


4.        EMP Table을 select 해보면 다음과 같이 데이터가 입력되어 있습니다.

……
……
……
8        홍길동8                                               
77        홍길동77                                               
65        홍길동65                                               
26        홍길동26                                               
10        홍길동10                                               
9        홍길동9           
 




댓글 없음:

댓글 쓰기