[자바 JDBC오류]JDBC OCI를 이용한 Array Test 예제
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[10/31]JAVA&WEB프레임워크실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[10/31]JAVA&WEB프레임워크실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[기타 다른 강좌는 아래 해당 카테고리를 클릭해주세요]
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 <st2:personname w:st="on">홍길동</st2:personname>8
77 <st2:personname w:st="on">홍길동</st2:personname>77
65 <st2:personname w:st="on">홍길동</st2:personname>65
26 <st2:personname w:st="on">홍길동</st2:personname>26
10 <st2:personname w:st="on">홍길동</st2:personname>10
9 <st2:personname w:st="on"><st1:sn w:st="on">홍</st1:sn><st1:givenname w:st="on">길동</st1:givenname></st2:personname>
댓글 없음:
댓글 쓰기