Real Alternative DBMS ALTIBASE, Since 1999 JAVA 개발가이드 2010. 07 Copyright c 2000~2010 ALTIBASE Corporation. All Rights Reserved.
Document Control Change Record Date Author Change Reference 2010-07 snkim Created 2011-10 snkim Modified 2012-03-30 eheejung Modified Reviews Date Name (Position) Distribution Name Location JAVA 개발가이드 2 page of 35
목차 개요... 4 개발전설정사항... 5 ALTIBASE JDBC Driver 파일을얻는방법... 5 ALTIBASE JDBC Driver 버전을확인하는방법... 5 SETTING UP JDBC DRIVER... 6 JRE 에서설정하는방법... 6 Eclipse 에서설정하는방법... 7 DRIVER LADING & CNNECTIN URL... 8 Driver loading... 8 일반 Connection... 8 Connection 시설정하는 Property... 8 ALTIBASE 의 ConnectionPool 을이용한 Connection... 9 A 를이용한 Connection...10 Failver 를이용한 Connection...11 ALTIBASE5 와이전버전을동시에 Connection...12 ALTIBASE5 와이전버전을동시에 Connection IBM JAVA 1.6 환경...13 Stored Procedure/Function 호출...14 개발참고사항...15 PreparedStatement 의사용...15 executebatch() 의사용...15 setfetchsize() 의사용...15 자원의반납...16 NULL 값의처리...16 LB 데이터처리...16 REF CURSR 사용하는방법...16 오류사항...18 Communication link failure...18 No suitable driver...18 Client unable to establish connection...18 Timeout 관련오류...18 Invalid descriptor index...19 ptional feature not implemented...19 기타...19 부록...20 java.sql 패키지...20 javax.sql 패키지...33 javax.sql 패키지...33 JAVA 개발가이드 3 page of 35
개요 본문서는 JAVA 환경에서 ALTIBASE 를연동해개발하는방법과개발시에주의해야하는사항에대해기술한개발가이드문서이다. ALTIBASE 버전은 5.3.3 을기반으로, JRE 혹은 JDK 는 1.5 버전 (ALTIBASE 5.3.3 은 JRE1.4 와 1.5 를지원 ) 을기반으로한다. 그리고개발 IDE 로는 Eclipse 를사용한다. 다음은본문서와더불어개발시참고해야할문서들이다. 1. ALTIBASE 환경의개발시고려사항가이드 2. ALTIBASE SQL Tuning Guide JAVA 개발가이드 4 page of 35
개발전설정사항 JAVA 에서 ALTIBASE 와연동하기위해서는 ALTIABSE JDBC Driver 가필요하다. 다음은 ALTIBASE JDBC Diver 를얻는방법에대해설명한다. ALTIBASE JDBC Driver 파일을얻는방법 ALTIBASE 에서제공하는 JDBC driver 는 Altibase.jar 파일이다. 이파일은 ALTIBASE 가설치되어있는서버의 $ALTIBASE_HME/lib 디렉토리안에존재한다. ALTIBASE 5 버전부터는 $ALTIBASE_HME/lib 디렉토리에 Altibase.jar 파일과 Altibase5.jar 파일이존재하는데, Altibase.jar 는일반 JDBC Driver 파일이고, Altibase5.jar 는 ALTIBASE 5 버전과그이하의버전을함께연동하고싶을때사용하는 JDBC Driver 파일이다. 따라서하나의 ALTIBASE DB 와연동하거나, 또는버전이동일한여러대의 ALTIBASE 와연동할경우에는 $ALTIBASE_HME/lib/Altibase.jar 파일을사용하면된다. Altibase.jar 와 Altibase5.jar 를이용하여버전이서로다른 ALTIBASE 와연동하는방법은아래에서설명한다. ALTIBASE JDBC Driver 버전을확인하는방법 연동하려는 ALTIBASE DB Server 와 ALTIBASE JDBC Driver 가호환가능한지확인을위해 ALTIBASE JDBC Driver 버전확인이필요하다. ALTIBASE JDBC Driver 버전을확인하는방법은다음의명령어를수행하면된다. $ java jar Altibase.jar JDBC Driver Info : Altibase Ver = 5.3.3.13 for JavaVM v1.4, CMP:5.6.1, $Revision: 14502 $ Jan 13 2010 14:35:28 이때, ALTIBASE DB Server 의 cm protocol version 과 ALTIBASE JDBC Driver 의 CMP 가동일하면호환가능하다. $ altibase -v version 5.3.3.13 EN_LINU_redhat_Enterprise_AS4-64bit-5.3.3.13-release- GCC3.4.6 (xeon-redhat-linux-gnu) Jan 13 2010 14:35:30, binary db version 5.4.1, meta version 5.6.1, cm protocol version 5.6.1, replication protocol version 5.4.1 버전이 UP 되면서 JDBC 관련버그가 fix 되었을가능성이있으므로, 일반적으로 ALTIBASE DB Server 의버전과같거나이보다더최신의 ALTIBASE JDBC Driver 파일을사용하는것을권장한다. JAVA 개발가이드 5 page of 35
Setting up JDBC Driver ALTIBASE JDBC Driver 를 setting 하는방법에대해설명한다. JRE 에서설정하는방법 Java Application 에서 ALTIBASE JDBC Driver 를사용하기위해서는다음의방법중한가지방법을이용하여 JRE 에서 ALTIBASE JDBC Driver 를인식할수있도록해야한다. 1. CLASSPATH 환경변수에추가 ALTIBASE JDBC Driver(Altibase.jar) 파일을환경변수 CLASSPATH 에추가한다. 1) Windows 내컴퓨터 속성 고급 환경변수에기존의 CLASSPATH 가지정되어있다면끝에 ALTIBASE JDBC Driver 의위치를추가하고, 기존의 CLASSPATH 가없다면, 새로만들기버튼을클릭하여 CLASSPATH 변수를등록한다. 2) Unix 환경설정파일 (ex.profile) 에다음과같이 CLASSPATH를추가한다. export ALTIBASE_HME=$HME/altibase_home export CLASSPATH=.:$ALTIBASE_HME/lib/Altibase.jar 2. JRE(Java Runtime Environment) 에위치 JRE 환경에서 ALTIBASE JDBC Driver(Altibase.jar) 을자동으로참조할수있도록다음디렉토리에 Altibase.jar 파일을위치시킨다. $JAVA_HME/jre/lib/ext 디렉토리 또는 $JRE_HME/lib/ext 디렉토리 ($JAVA_HME 은 JDK 의설치디렉토리, $JRE_HME 은 JRE 의설치디렉토리를의미한다.) 3. 실행시 classpath 옵션지정 JAVA 개발가이드 6 page of 35
java 명령어로 Java Application 을실행할때 cp 또는 classpath 옵션을지정해 ALTIBASE JDBC Driver 를인식하도록지정할수있다. $java classpath $ALTIBASE_HME/lib/Altibase.jar HelloApp Eclipse 에서설정하는방법 Eclipse 에서 ALTIBASE JDBC Driver 를추가하는방법은다음과같다. 프로젝트 JRE System Library [J2SE-1.5] - Properties Installed JREs 항목중 jre 를클릭 Edit Add External JARs 를클릭하여 ALTIBASE JDBC Driver 인 Altibase.jar 를추가한다. JAVA 개발가이드 7 page of 35
Driver loading & Connection URL ALTIBASE JDBC Driver 를로딩하고 ALTIBASE 에연결하는방법에대해설명한다. Driver loading ALTIBASE JDBC Driver 클래스이름은 Altibase.jdbc.driver.AltibaseDriver 이다. 따라서 Driver 를 loading 할때, 이클래스이름을사용하면된다. 아래의예는 Class.forName 메소드를호출하여 Driver 를 loading 하는코드이다. Class.forName("Altibase.jdbc.driver.AltibaseDriver"); 일반 Connection JDBC 에서 Connection 객체를얻을때 DriverManager.getConnection 메소드를호출한다. 이때 String 타입의 url 을 argument 로넣어줘야하는데, ALTIBASE connection url 은다음과같은형식으로작성하면된다. jdbc:altibase://ip_address:port_no/db_name *ip_address : ALTIBASE DB 서버의 ip * port_no : ALTIBASE DB 의 port_no($altibase_hme/conf/altibase.properties 파일의 PRT_N 프로퍼티로정의되어있음 ) * db_name : ALTIBASE DB 의 name ($ALTIBASE_HME/conf/altibase.properties 파일의 DB_NAME 프로퍼티로정의되어있음 ) 다음은위에형식에맞춰 Connection 객체를얻어오는예이다. - AltibaseConnection.java 파일 String db_url1 = "jdbc:altibase://192.168.1.111:20300/mydb"; Properties props1 = new Properties(); props1.put("user", "sys"); props1.put("password", "manager"); Connection altibaseconnection1 = DriverManager.getConnection(db_url1, props1); * 서버 ip는 192.168.1.111, port_no는 20300, db_name은 mydb 여 Connection 시설정하는 Property Connection 을얻을때 db 의사용자명, 패스워드를포함해여러가지프로퍼티를지정할수있다. 해당프로퍼티들은 java.util.properties 클래스를이용하여지정하거나, JAVA 개발가이드 8 page of 35
String url 부분에 &property_name=value 형태로연결하여지정할수있다. 지정가능한프로퍼티들은다음과같다. 프로퍼티이름설명기본값 portnumber DB 의 port_no 20300 databasename DB 의 name JDBC user DB 사용자이름 SYS password DB 사용자암호 MANAGER servername DB 서버의 IP localhost CNNTYPE Connection type 1 : TCP/IP 3 : IPC 1 다음은 property를지정하는예제이다. 1. Property 클래스이용 Properties props1 = new Properties(); props1.put("user", "sys"); props1.put("password", "manager"); Connection altibaseconnection1 = DriverManager.getConnection(db_url1, props1); 2. url 에연결하여지정 String db_url1 = "jdbc:altibase://192.168.1.111:20300/mydb?user=sys&password=manager"; Connection altibaseconnection1 = DriverManager.getConnection(db_url1); ALTIBASE 의 ConnectionPool 을이용한 Connection ALTIBASE 에서제공하는 ABPoolingDataSource 클래스를사용하면 ConnectionPool 을이용하여 Connection 을관리할수있다. ABPoolingDataSource 객체를생성한후, seturl() 메소드를이용하여 Connection url 정보를 setting 해주거나, 각각의프로퍼티를 setting 해주는 set () 메소드를호출하여구현하면된다. ABPoolingDataSource 클래스는 Altibase.jdbc.driver 패키지안에정의되어있다. - AltibaseConnectionPool.java 파일 import Altibase.jdbc.driver.*; String db_url1 = "jdbc:altibase://192.168.1.111:20300/mydb"; ABPoolingDataSource pool = new ABPoolingDataSource(); JAVA 개발가이드 9 page of 35
pool.seturl(db_url1); pool.setuser("sys"); pool.setpassword("manager"); pool.setinitialpoolsize(10); pool.setminpoolsize(5); pool.setmaxpoolsize(15); pool.setmaxidletime(10);.. Connection altibaseconnection1 = pool.getconnection();... 필요하다면, ConnectionPool 에다음의프로퍼티들을적용할수있다. Property 설명 url user password ALTIBASE 와연결을위한 Connection string 정보 jdbc:altibase://ip:port_no/db_name 형태로기입 데이터베이스계정 데이터베이스패스워드 maxpoolsize 최대 Connection 수. 기본값 10. minpoolsize 최소 Connection 수. 기본값 0. initialpoolsize 초기 Connection 수. 기본값 1. maxidletime propertycycle idle 대기시간 ConnectionPool 이다찼을때대기시간 (millisec) A 를이용한 Connection 분산트랜잭션을관리하기위해서는 ALTIBASE 가제공하는 ABADataSource, 클래스를사용하여 Connection 을얻어올수있다. 이클래스는 Altibase.jdbc.driver 패키지에정의되어있다. 다음의예제처럼 ABAResource 객체를통해 AConnection 객체를얻어오고, AConnection 객체를통해 Connection 객체를얻어옴으로써 A 를구현할수있다. - AltibaseAConnection.java 파일 import Altibase.jdbc.driver.*; ABADataSource axds1 = new ABADataSource(); JAVA 개발가이드 10 page of 35
axds1.seturl("jdbc:altibase://192.168.1.131:20300/mydb"); axds1.setuser("sys"); axds1.setpassword("manager"); ABADataSource axds2 = new ABADataSource(); axds2.seturl("jdbc:altibase://192.168.1.35:20300/mydb"); axds2.setuser("sys"); axds2.setpassword("manager"); // Get A connections to the underlying data sources AConnection pc1 = axds1.getaconnection(); AConnection pc2 = axds2.getaconnection(); // Get the physical connections Connection conn1 = pc1.getconnection(); Connection conn2 = pc2.getconnection(); // Get the A resources AResource axar1 = pc1.getaresource(); AResource axar2 = pc2.getaresource(); Failver 를이용한 Connection ALTIBASE 5.3.3 부터 Failver 를지원한다. Failver 를사용하기위해서는 Connection url 부분에 Failver 관련속성을넣어주면된다. 다음은 Failver 를이용하여 ALTIBASE 에연결하는예제이다. - AltibaseFailverConnection.java 파일 String db_url1 = "jdbc:altibase://192.168.6.224:21129/mydb?alternateservers=(192.168.1.35:21129) &ConnectionRetryCount=3&ConnectionRetryDelay=3&SessionFailver=on &LoadBalance=off"; Properties props1 = new Properties(); props1.put("user", "sys"); props1.put("password", "manager"); Connection altibaseconnection1 = DriverManager.getConnection(db_url1,props1); Failver 관련속성은다음과같다. 속성 AlternateServer 설명 장애발생시접속하게될가용서버를나타내며 (IP Address1:Port1, IP Address2:Port2,...) 형식으로기술한다. JAVA 개발가이드 11 page of 35
ConnectionRetryCount ConnectionRetryDelay LoadBalance SessionFailver 가용서버접속실패시, 접속시도반복횟수 가용서버접속실패시, 다시접속을시도하기전에대기하는시간 ( 초단위 ) on 으로설정하면최초접속시도시에기본서버와가용서버를포함하여랜덤으로선택한다. off 로설정하면최초접속시도시에기본서버에접속하고, 접속에실패하면 AlternateServer 로기술한서버에접속한다. STF(Service Time Fail-ver) 를할것인지여부를나타낸다. on : STF, off : CTF CTF(Connection Time Fail-ver) 는 DBMS 접속시점에장애를인식하여장애가발생한 DBMS 대신다른가용노드의 DBMS 로접속하고서비스를진행한다. STF(Service Time Fail-ver) 는 DBMS 접속에성공하여서비스하는도중에장애가발생하는것으로, 다른가용노드의 DBMS 에다시접속하여세션의프로퍼티를복구한후사용자응용프로그램의업무로직을다시수행하도록하는것을의미한다. 즉장애가발생한 DBMS 에서수행된작업을다시한번수행할필요가있는경우이다. ALTIBASE5 와이전버전을동시에 Connection ALTIBASE 5 부터는하나의어플리케이션에서 ALTIBASE 5 와 ALTIBASE 4 혹은 ALTIBASE 3 와동시에연결할수있도록 ALTIBASE 5 버전전용의 Driver(Altibase5.jar) 를제공한다. 이 Driver 를이용하면 ALTIBASE 5 ALTIBASE 4, 혹은 ALTIBASE 5 ALTIBASE 3, ALTIBASE 5.1.5 ALTIBASE 5.3.3 간두버전의 ALTIBASE 에접속이가능하다. Altibase.jar Driver 와구별하기위해 ALTIBASE 5 전용 Driver 클래스의이름은 Altibase5.jdbc.driver.AltibaseDriver 로정의되어있다. 따라서 Class.forName() 메소드를이용하여 Driver 클래스를로딩할때위의 Driver 클래스이름으로로딩하면된다. 두버전의 ALTIBASE 에접속하기위해서는 Altibase.jar 와 Altibase5.jar 두개의 JDBC Driver 가있어야하고 Driver 클래스로딩시반드시 Altibase5.jdbc.driver.AltibaseDriver 를먼저로딩해줘야한다. 다음은 Altibase.jar 와 Altibase5.jar 파일을이용하여두버전의 ALTIBASE 의드라이버를로딩하는예제이다. - AltibaseMultiversionConnection.java 파일 // ALTIBASE 5 용 Driver 클래스 Class.forName("Altibase5.jdbc.driver.AltibaseDriver ); // ALTIBASE 5 이전버전용 Driver 클래스 Class.forName("Altibase.jdbc.driver.AltibaseDriver"); JAVA 개발가이드 12 page of 35
//ALTIBASE 5 버전 URL String db_url1 = "jdbc:altibase://192.168.1.111:20300/mydb"; //ALTIBASE 5 이전버전 URL String db_url2 = "jdbc:altibase://192.168.1.222:20300/mydb"; ALTIBASE5 와이전버전을동시에 Connection IBM JAVA 1.6 환경 IBM Java 1.6 버전에서는이버전의 DriverManager 특성상 cm protocol version 을포함한 URL 을연결스트링에명시해야한다. IBM Java 1.6 버전을제외한다른버전의 DriverManager 는로딩한 Driver 클래스로 connection 을시도하다가 SQLException 이발생하면다음 Driver 클래스로 connection 을시도한다. 그러나 IBM Java 1.6 의 DriverManager 는재시도하지않고바로예외처리를하는특성때문에이와같은방식을추가하였다. - AltibaseMultiversionConnection.java 파일 // cm 버전을추가한 URL 예시 String db_url1 = "jdbc:altibase_5.6.2://192.168.1.111:20300/mydb"; String db_url2 = "jdbc:altibase_4.5.1://192.168.1.222:20300/mydb"; cm protocol version 은 ALTIBASE JDBC Driver 버전을확인하는방법에서확인할수있으며, cm protocol version 을포함한 URL 을명시할경우드라이버로딩순서는상관없다. 이방식은 Bug-33734 를반영한 JDBC driver 버전에서사용할수있다. Bug-33734 를반영되지않은 JDBC driver 버전의경우코드를아래와같이수정해서사용하는방법도있다. - AltibaseMultiversionConnection.java 파일 Connection altibaseconnection1 = null, altibaseconnection2 = null; java.util.enumeration e = DriverManager.getDrivers(); while (e.hasmoreelements()) { } Driver drv = (Driver) e.nextelement(); if (drv.getmajorversion() == 5) else altibaseconnection1 = drv.connect(db_url1, props); altibaseconnection1 = drv.connect(db_url2, props); JAVA 개발가이드 13 page of 35
Stored Procedure/Function 호출 DB 에생성한 Stored Procedure 를호출할때에는 CallableStatement 객체를얻어올때넣어주는 call SQL 문을다음과같이작성하면된다. 1. Stored Procedure { call procedure_name(?,?,...) } *? 는 procedure 의 parameter 에대응되는매개변수이다. 2. Stored Procedure { call? := function_name(?,?,...) } * := 전에있는? 는 function 을호출한후결과값을나타내는매개변수이다. () 안에있는? 는 function 의 parameter 에대응되는매개변수이다. 다음은 Stored Procedure와 Function을호출하는예제이다. - AltibasePSMCall.java 파일 // Stored Procedure 호출 String sql1 = "{call sum_proc(?,?,?)}"; CallableStatement altibasestatement1 = altibaseconnection1.preparecall(sql1); altibasestatement1.setint(1,10); altibasestatement1.setint(2,20); altibasestatement1.registerutparameter(3,java.sql.types.numeric); altibasestatement1.execute(); System.out.println(altibaseStatement1.getDouble(3)); System.out.println(); // Stored Function 호출 String sql2 = "{call? := sum_func(?,?)}"; CallableStatement altibasestatement2 = altibaseconnection1.preparecall(sql2); altibasestatement2.registerutparameter(1,java.sql.types.numeric); altibasestatement2.setint(2,10); altibasestatement2.setint(3,20); altibasestatement2.execute(); System.out.println(altibaseStatement2.getDouble(1)); JAVA 개발가이드 14 page of 35
개발참고사항 JAVA 개발시참고해야하는사항에대해설명한다. PreparedStatement 의사용 PreparedStatement 는 SQL 문을미리만들어놓고, 매개변수를통해값을그때그때 binding 하여처리하는객체이다. 반면에 Statement 객체는 SQL 문을매번 prepareexecute 방식으로처리하는객체이다. 따라서매개변수를이용하여 binding-execute 로처리가가능한 SQL 문이라면 PreparedStatement 객체를사용하는것이성능상에좋다. 예를들어, n 건을 INSERT 하는문장, 특정값을조건으로반복적으로 SELECT 하는문장이라면 PreparedStatement 객체로만들어야한다. executebatch() 의사용 Bulk 성 DML 문을처리할때 executeupdate() 메소드를호출하면 executeupdate() 를호출할때마다데이터가 DB 서버로전송이된다. 반면에 executebatch() 를사용하면 array processing 을이용하여여러건의데이터를 array 에담아놓고서버로한번에전송한다. 즉 executebatch() 를사용하면 DB 서버와의통신횟수를줄일수있어성능을향상시킬수있다. 사용하는방법은먼저 addbactch() 를이용하여 n 개의데이터를 array 에계속담고, executebatch() 를실행하면된다. setfetchsize() 의사용 setfetchsize() 메소드를사용하면조회시 DB 서버로부터한번에 fetch 하는레코드의개수를지정할수있다. 이메소드 argument 의수치를늘려서호출하면 fetch 시 server 와통신횟수를줄일수있기때문에성능을향상시킬수있다. setfetchsize 를지정하지않았을경우통신버퍼 (32K) 에레코드들이꽉채워져서 DB 서버와통신이일어난다. setfetchsize 에지정한레코드건수가통신버퍼를꽉채울수있는레코드의건수보다작을경우불필요한 DB 서버와의통신이일어나므로 setfetchsize 는 32K 통신버퍼를채울수있는최대레코드건수보다큰값을지정해주는것이좋다. 하지만 setfetchsize 에지정한레코드건수에비례하여클라이언트의메모리가증가하게되므로무작정 setfetchsize 의값을크게지정해주는것은좋지않다. 예를들어 5000byte 의레코드를 fetch 하는프로그램에서 setfetchsize(10) 에비해 setfetchsize(1000) 으로지정한것은약 5000*(1000-10)=4950K bytes 만큼더메모리가더증가되게된다. 따라서 setfetchsize 에지정하는것은통신횟수를줄여성능을향상시킬수있지만, 지정한레코드건수에비례하여클라이언트의메모리가증가하기때문에적정수치로늘려줘야한다. JAVA 개발가이드 15 page of 35
자원의반납 Connection, Statement, ResultSet 객체의사용이끝나면명시적으로 close() 메소드를호출하여해당자원을반납해야한다. 만약 close() 를호출하지않으면해당객체가 release 되는시점은 JVM 의 GC 쓰레드에의해제거되는시점인데 GC 는 heap 메모리의 eden 영역에서차지하는객체들의메모리사용률과 GC 가수행완료할때까지의시간을계산하여동작하므로사용되지않는 Connection, Statement, ResultSet 객체들이계속 heap 메모리에남아있을수있다. 만약 Statement 의객체가 heap 메모리에남아있게된다면 DB 서버는해당 SQL 을 prepare 한내용을계속저장하고있어야하므로 DB 서버의불필요한메모리가증가하게된다.(PreparedStatement 도마찬가지다.) 따라서반드시사용이끝난객체들은그순간명시적으로 close() 를호출해줘야한다. NULL 값의처리 PreparedStatement 객체를이용할때 NULL 값을 setting 하기위해서는 setbject() 메소드와 setnull() 메소드를이용할수있다. 이때 setbject() 메소드를이용하여 NULL 값을 setting 할때는 setbject(parameterindex, null, SQLType.NULL) 메소드를이용해서 setting 하거나 setnull(parameterindex, null) 메소드를이용하여 setting 해야한다. ALTIBASE 는 setbject(parameterindex, null) 메소드는지원하지않기때문에에러가발생된다. LB 데이터처리 ALTIBASE 에서 LB 데이터를처리하기위해반드시 autocommit 을 off 로설정해야한다. 만약 autocommit 이 on 인상태에서 LB 데이터를처리하면 Connection is in autocommit mode. ne can not operate on LB datas with autocommit mode on 에러가발생되거나혹은 null 값이리턴되기때문에원치않는결과가나올수있다. JDBC 는 default 로 autocommit 이 on 이므로반드시 Connection 의 setautocommit(false); 를호출한후 LB 데이터를처리해야한다. LB 데이터연동예제는 $ALTIBASE_HME/sample/JDBC/CLB 과 BLB 안에있는 java 소스파일을참조하면된다. REF CURSR 사용하는방법 Stored Procedure 로작성한 REF CURSR 를이용하여결과집합을클라이언트 Java Program 에서사용할수있다. 사용하는방법은다음의예제를참고한다. - TYPE 정의 CREATE R REPLACE TYPESET my_type AS END; / TYPE my_cur IS REF CURSR; JAVA 개발가이드 16 page of 35
- REF CURSR 정의 CREATE R REPLACE PRCEDURE my_ref_cursor ( v_result UT my_type.my_cur, v_sql IN VARCHAR(1000) ) AS BEGIN PEN v_result FR v_sql; END; / - AltibaseRefCursor.java 파일 String sql = "SELECT to_char(sysdate,'yyyy-mm-dd') FRM dual"; altibasestatement3= altibaseconnection1.preparecall(" { call my_ref_cursor(?)}"); altibasestatement3.setstring(1,sql); altibasestatement3.execute(); rs = altibasestatement3.getresultset(); while(rs.next()){ System.out.println(rs.getString(1)); } JAVA 개발가이드 17 page of 35
오류사항 개발시자주마주치게되는오류내용에대해설명한다. Communication link failure 이에러는 DB 가구동이되어있지않은경우, 연결시 connection 관련프로퍼티가잘못된경우, Altibase.jar 의버전이잘못된경우 (ALTIBASE 5.3.3 에접속하는데 ALTIBASE 5.1.5 의 Altibase.jar 를사용한경우 ), 또는서비스도중 TIMEUT 등으로연결이끊겼을경우발생한다. 연결시해당에러가발생하면 DB 서버의 IP, port_no, user, password 등 connection 관련프로퍼티를점검해본다. 서비스도중위의에러가발생하면 TIMEUT 이발생하여해당세션이종료되었는지확인해본다. No suitable driver ALTIBASE JDBC Driver 가잘못되었을경우에발생하는에러이다. 예를들어, ALTIBASE 5 버전에접속하는데 ALTIABSE 4 용 Altibase.jar 파일을이용했다면해당에러가발생한다. Client unable to establish connection ALTIBASE 서버가구동되어있지않은경우에발생하는에러이다. 이에러발생시 ALTIBASE 가구동되어있는지확인한다. Timeout 관련오류 ALTIBASE 는세션의 TIMEUT 값을설정하여 TIMEUT 이발생할경우에러를리턴하고해당문장을 RLLBACK 하거나해당세션을 CLSE 한다. TIMEUT 이발생했을때클라이언트에서발생되는에러메시지는다음과같다. 구분 QUERY_TIMEUT FETCH_TIMEUT IDLE_TIMEUT UTRANS_TIMEUT 에러메시지 Client's query exceeded in the execution time limitation Communication link failure. Communication link failure. The session has been closed by server. JAVA 개발가이드 18 page of 35
위의 TIMEUT 중 QUERY_TIMEUT 은해당문장을 RLLBACK 시키고에러를리턴한다. 그외의 TIMEUT 은해당문장을 RLLBACK 시키고해당세션을 CLSE 시킨다. 그이후클라이언트프로그램에서 DB 서버로작업을요청하는시점에위의에러가발생하게된다. 만약클라이언트프로그램에서위의에러메시지를리턴받았다면, $ALTIBASE_HME/trc/altibase_boot.log 에 TIMEUT 관련에러메시지가있는지확인해야한다. 구분 QUERY_TIMEUT FETCH_TIMEUT IDLE_TIMEUT UTRANS_TIMEUT 에러메시지 (altibase_boot.log) [Notify : Query Timeout] Query Canceled by Server [Notify : Fetch Timeout] Session Closed by Server [Notify : Idle Timeout] Session Closed by Server [Notify : UTrans Timeout] Session Closed by Server Invalid descriptor index 이에러메시지는 PreparedStatement 에서지정한바인드변수 (?) 보다더많은값을 set() 를호출할때나타나는에러메시지이다. altibasestatement3= altibaseconnection1.preparestatement("select c1 FRM t2 "); altibasestatement3.setstring(1,"1"); // 에러발생 ptional feature not implemented ALTIBASE 에서아직제공하지않는메소드를호출시발생하는에러이다. JDBC 각메소드의지원여부는부록부분을참고하면된다. 기타 그외의다른에러메시지는 ALTIBASE 환경의개발시고려사항가이드 문서를참고한다. JAVA 개발가이드 19 page of 35
부록 JDBC3.0 API 의 ALTIBASE 지원여부에대해설명한다. java.sql 패키지 다음은 ALTIBASE 에서 JDBC 각메소드들을지원하는지, 지원하지않는지, 일부만지원하는지에대해정리한표이다. Driver 반환타입 함수이름 지원여부 boolean acceptsurl(string url) Connection connect(string url, Properties info) int getmajorversion() int getminorversion() DriverPropertyInfo[] getpropertyinfo(string url, Properties info) boolean jdbccompliant() Connection 반환타입 함수이름 지원여부 clearwarnings() close() commit() Statement createstatement() Statement Statement createstatement(int resultsettype, int resultsetconcurrency) createstatement(int resultsettype, int resultsetconcurrency, int resultsetholdability) boolean getautocommit() String getcatalog() int getholdability() DatabaseMetaData getmetadata() int gettransactionisolation() Map gettypemap() SQLWarning getwarnings() boolean isclosed() boolean isreadnly() String nativesql(string sql) CallableStatement preparecall(string sql) CallableStatement CallableStatement preparecall(string sql, int resultsettype, int resultsetconcurrency) preparecall(string sql, int resultsettype, int resultsetconcurrency, int resultsetholdability) PreparedStatement preparestatement(string sql) PreparedStatement preparestatement(string sql, int autogeneratedkeys) PreparedStatement preparestatement(string sql, int[] columnindexes) PreparedStatement preparestatement(string sql, int resultsettype, int JAVA 개발가이드 20 page of 35
반환타입 함수이름 지원여부 resultsetconcurrency) PreparedStatement PreparedStatement preparestatement(string sql, int resultsettype, int resultsetconcurrency, int resultsetholdability) preparestatement(string sql, String[] columnnames) releasesavepoint(savepoint savepoint) rollback() rollback(savepoint savepoint) setautocommit(boolean autocommit) setcatalog(string catalog) setholdability(int holdability) setreadnly(boolean readnly Savepoint setsavepoint() Savepoint setsavepoint(string name) settransactionisolation(int level) settypemap(map map) DatabaseMetaData 반환타입 함수이름 지원여부 boolean allproceduresarecallable() boolean alltablesareselectable() boolean datadefinitioncausestransactioncommit() boolean datadefinitionignoredintransactions() boolean deletesaredetected(int type) boolean doesmaxrowsizeincludeblobs() ResultSet ResultSet getattributes(string catalog, String schemapattern, String typenamepattern, String attributenamepattern) getbestrowidentifier(string catalog, String schema, String table, int scope, boolean nullable) ResultSet getcatalogs() Δ String getcatalogseparator() Δ String getcatalogterm() Δ ResultSet ResultSet getcolumnprivileges(string catalog, String schema, String table, String columnnamepattern) getcolumns(string catalog, String schemapattern, String tablenamepattern, String columnnamepattern) Connection getconnection() ResultSet getcrossreference(string primarycatalog, String primaryschema, String primarytable, String foreigncatalog, String foreignschema, String foreigntable) int getdatabasemajorversion() int getdatabaseminorversion() String getdatabaseproductname() String getdatabaseproductversion() int getdefaulttransactionisolation() int getdrivermajorversion() int getdriverminorversion() String getdrivername() Δ JAVA 개발가이드 21 page of 35
반환타입함수이름지원여부 String getdriverversion() ResultSet getexportedkeys(string catalog, String schema, String table) String getextranamecharacters() Δ String getidentifierquotestring() Δ ResultSet ResultSet getimportedkeys(string catalog, String schema, String table) getindexinfo(string catalog, String schema, String table, boolean unique, boolean approximate) int getjdbcmajorversion() int getjdbcminorversion() int getmaxbinaryliterallength() int getmaxcatalognamelength() int getmaxcharliterallength() int getmaxcolumnnamelength() int getmaxcolumnsingroupby() int getmaxcolumnsinindex() int getmaxcolumnsinrderby() int getmaxcolumnsinselect() int getmaxcolumnsintable() int getmaxconnections() int getmaxcursornamelength() int getmaxindexlength() int getmaxprocedurenamelength() int getmaxrowsize() int getmaxschemanamelength() int getmaxstatementlength() int getmaxstatements() int getmaxtablenamelength() int getmaxtablesinselect() int getmaxusernamelength() String getnumericfunctions() ResultSet ResultSet ResultSet getprimarykeys(string catalog, String schema, String table) getprocedurecolumns(string catalog, String schemapattern, String procedurenamepattern, String columnnamepattern) getprocedures(string catalog, String schemapattern, String procedurenamepattern) String getprocedureterm() int getresultsetholdability() ResultSet getschemas() String getschematerm() String getsearchstringescape() String getsqlkeywords() int getsqlstatetype() String getstringfunctions() ResultSet getsupertables(string catalog, String schemapattern, String tablenamepattern) JAVA 개발가이드 22 page of 35
ResultSet 반환타입함수이름지원여부 getsupertypes(string catalog, String schemapattern, String typenamepattern) String getsystemfunctions() ResultSet ResultSet gettableprivileges(string catalog, String schemapattern, String tablenamepattern) gettables(string catalog, String schemapattern, String tablenamepattern, String[] types) ResultSet gettabletypes() String gettimedatefunctions() ResultSet gettypeinfo() ResultSet getudts(string catalog, String schemapattern, String typenamepattern, int[] types) String geturl() String getusername() ResultSet getversioncolumns(string catalog, String schema, String table) boolean insertsaredetected(int type) boolean iscatalogatstart() boolean isreadnly() boolean locatorsupdatecopy() boolean nullplusnonnullisnull() boolean nullsaresortedatend() boolean nullsaresortedatstart() boolean nullsaresortedhigh() boolean nullsaresortedlow() boolean othersdeletesarevisible(int type) boolean othersinsertsarevisible(int type) boolean othersupdatesarevisible(int type) boolean owndeletesarevisible(int type) boolean owninsertsarevisible(int type) boolean ownupdatesarevisible(int type) boolean storeslowercaseidentifiers() boolean storeslowercasequotedidentifiers() boolean storesmixedcaseidentifiers() boolean storesmixedcasequotedidentifiers() boolean storesuppercaseidentifiers() boolean storesuppercasequotedidentifiers() boolean supportsaltertablewithaddcolumn() boolean supportsaltertablewithdropcolumn() boolean supportsansi92entrylevelsql() boolean supportsansi92fullsql() boolean supportsansi92intermediatesql() boolean supportsbatchupdates() boolean supportscatalogsindatamanipulation() boolean supportscatalogsinindexdefinitions() boolean supportscatalogsinprivilegedefinitions() boolean supportscatalogsinprocedurecalls() boolean supportscatalogsintabledefinitions() boolean supportscolumnaliasing() JAVA 개발가이드 23 page of 35
반환타입함수이름지원여부 boolean supportsconvert() boolean supportsconvert(int fromtype, int totype) boolean supportscoresqlgrammar() boolean supportscorrelatedsubqueries() boolean supportsdatadefinitionanddatamanipulationtrans actions() boolean supportsdatamanipulationtransactionsnly() boolean supportsdifferenttablecorrelationnames() boolean supportsexpressionsinrderby() boolean supportsextendedsqlgrammar() boolean supportsfulluterjoins() boolean supportsgetgeneratedkeys() boolean supportsgroupby() boolean supportsgroupbybeyondselect() boolean supportsgroupbyunrelated() boolean supportsintegrityenhancementfacility() boolean supportslikeescapeclause() boolean supportslimiteduterjoins() boolean supportsminimumsqlgrammar() boolean supportsmixedcaseidentifiers() boolean supportsmixedcasequotedidentifiers() boolean supportsmultiplepenresults() boolean supportsmultipleresultsets() boolean supportsmultipletransactions() boolean supportsnamedparameters() boolean supportsnonnullablecolumns() boolean supportspencursorsacrosscommit() boolean supportspencursorsacrossrollback() boolean supportspenstatementsacrosscommit() boolean supportspenstatementsacrossrollback() boolean supportsrderbyunrelated() boolean supportsuterjoins() boolean supportspositioneddelete() boolean supportspositionedupdate() boolean supportsresultsetconcurrency(int type, int concurrency) boolean supportsresultsetholdability(int holdability) boolean supportsresultsettype(int type) boolean supportssavepoints() boolean supportsschemasindatamanipulation() boolean supportsschemasinindexdefinitions() boolean supportsschemasinprivilegedefinitions() boolean supportsschemasinprocedurecalls() boolean supportsschemasintabledefinitions() boolean supportsselectforupdate() boolean supportsstatementpooling() boolean supportsstoredprocedures() boolean supportssubqueriesincomparisons() boolean supportssubqueriesinexists() JAVA 개발가이드 24 page of 35
반환타입함수이름지원여부 boolean supportssubqueriesinins() boolean supportssubqueriesinquantifieds() boolean supportstablecorrelationnames() boolean supportstransactionisolationlevel(int level) boolean supportstransactions() boolean supportsunion() boolean supportsunionall() boolean updatesaredetected(int type) boolean useslocalfilepertable() boolean useslocalfiles() ResultSet 반환타입 함수이름 지원여부 boolean absolute(int row) afterlast() beforefirst() cancelrowupdates() clearwarnings() close() deleterow() int findcolumn(string columnname) boolean first() Array getarray(int i) Array getarray(string colname) InputStream getasciistream(int columnindex) InputStream getasciistream(string columnname) BigDecimal getbigdecimal(int columnindex) BigDecimal getbigdecimal(int columnindex, int scale) BigDecimal getbigdecimal(string columnname) BigDecimal getbigdecimal(string columnname, int scale) InputStream getbinarystream(int columnindex). InputStream getbinarystream(string columnname) Blob getblob(int i) Blob getblob(string colname) boolean getboolean(int columnindex) boolean getboolean(string columnname) byte getbyte(int columnindex) byte getbyte(string columnname) byte[] getbytes(int columnindex) byte[] getbytes(string columnname) Reader getcharacterstream(int columnindex) Reader getcharacterstream(string columnname) Clob getclob(int i) Clob getclob(string colname) int getconcurrency() String getcursorname() Date getdate(int columnindex) Date getdate(int columnindex, Calendar cal) Δ Date getdate(string columnname) JAVA 개발가이드 25 page of 35
반환타입 함수이름 지원여부 Date getdate(string columnname, Calendar cal) Δ double getdouble(int columnindex) double getdouble(string columnname) int getfetchdirection() int getfetchsize() float getfloat(int columnindex) float getfloat(string columnname) int getint(int columnindex) int getint(string columnname) long getlong(int columnindex) long getlong(string columnname) ResultSetMetaData getmetadata() bject getbject(int columnindex) bject getbject(int i, Map map) bject getbject(string columnname) bject getbject(string colname, Map map) Ref getref(int i) Ref getref(string colname) int getrow() short getshort(int columnindex) short getshort(string columnname) Statement getstatement() String getstring(int columnindex) String getstring(string columnname) Time gettime(int columnindex) Time gettime(int columnindex, Calendar cal) Δ Time gettime(string columnname) Time gettime(string columnname, Calendar cal) Δ Timestamp gettimestamp(int columnindex) Timestamp gettimestamp(int columnindex, Calendar cal) Δ Timestamp gettimestamp(string columnname) Timestamp gettimestamp(string columnname, Calendar cal) Δ int gettype() InputStream getunicodestream(int columnindex) InputStream getunicodestream(string columnname) URL geturl(int columnindex) URL geturl(string columnname) SQLWarning getwarnings() insertrow(). boolean isafterlast() boolean isbeforefirst() boolean isfirst() boolean islast() boolean last() movetocurrentrow() movetoinsertrow() boolean next() boolean previous() JAVA 개발가이드 26 page of 35
반환타입함수이름지원여부 refreshrow() boolean relative(int rows) boolean rowdeleted() boolean rowinserted() boolean rowupdated() setfetchdirection(int direction) Δ setfetchsize(int rows) updatearray(int columnindex, Array x) updatearray(string columnname, Array x) updateasciistream(int columnindex, InputStream x, int length) updateasciistream(string columnname, InputStream x, int length) updatebigdecimal(int columnindex, BigDecimal x) updatebigdecimal(string columnname, BigDecimal x) updatebinarystream(int columnindex, InputStream x, int length) updatebinarystream(string columnname, InputStream x, int length) updateblob(int columnindex, Blob x) updateblob(string columnname, Blob x) updateboolean(int columnindex, boolean x) updateboolean(string columnname, boolean x) updatebyte(int columnindex, byte x) updatebyte(string columnname, byte x) updatebytes(int columnindex, byte[] x) updatebytes(string columnname, byte[] x) updatecharacterstream(int columnindex, Reader x, int length) updatecharacterstream(string columnname, Reader reader, int length) updateclob(int columnindex, Clob x) updateclob(string columnname, Clob x) updatedate(int columnindex, Date x) updatedate(string columnname, Date x) updatedouble(int columnindex, double x) updatedouble(string columnname, double x) updatefloat(int columnindex, float x) updatefloat(string columnname, float x) updateint(int columnindex, int x) updateint(string columnname, int x) updatelong(int columnindex, long x) updatelong(string columnname, long x) updatenull(int columnindex) updatenull(string columnname) updatebject(int columnindex, bject x) updatebject(int columnindex, bject x, int scale) updatebject(string columnname, bject x) updatebject(string columnname, bject x, JAVA 개발가이드 27 page of 35
반환타입함수이름지원여부 int scale) updateref(int columnindex, Ref x) updateref(string columnname, Ref x) updaterow() updateshort(int columnindex, short x) updateshort(string columnname, short x) updatestring(int columnindex, String x) updatestring(string columnname, String x) updatetime(int columnindex, Time x) updatetime(string columnname, Time x) updatetimestamp(int columnindex, Timestamp x) updatetimestamp(string columnname, Timestamp x) boolean wasnull() ResultSetMetaData 반환타입 함수이름 지원여부 String getcatalogname(int column) Δ String getcolumnclassname(int column) int getcolumncount() int getcolumndisplaysize(int column) String getcolumnlabel(int column) String getcolumnname(int column) int getcolumntype(int column) String getcolumntypename(int column) int getprecision(int column) int getscale(int column) String getschemaname(int column) String gettablename(int column) boolean isautoincrement(int column) boolean iscasesensitive(int column) boolean iscurrency(int column) boolean isdefinitelywritable(int column) int isnullable(int column) boolean isreadnly(int column) boolean issearchable(int column) boolean issigned(int column) boolean iswritable(int column) Statement 반환타입 함수이름 지원여부 addbatch(string sql) cancel() clearbatch() clearwarnings() close() boolean execute(string sql) boolean execute(string sql, int autogeneratedkeys) Δ boolean execute(string sql, int[] columnindexes) boolean execute(string sql, String[] columnnames) JAVA 개발가이드 28 page of 35
반환타입함수이름지원여부 int[] executebatch() ResultSet executequery(string sql) int executeupdate(string sql) int executeupdate(string sql, int autogeneratedkeys) int executeupdate(string sql, int[] columnindexes) int executeupdate(string sql, String[] columnnames) Connection getconnection() int getfetchdirection() int getfetchsize() ResultSet getgeneratedkeys() int getmaxfieldsize() int getmaxrows() boolean getmoreresults() boolean getmoreresults(int current) int getquerytimeout() ResultSet getresultset() int getresultsetconcurrency() int getresultsetholdability() int getresultsettype() int getupdatecount() SQLWarning getwarnings() setcursorname(string name) setescapeprocessing(boolean enable) setfetchdirection(int direction) Δ setfetchsize(int rows) setmaxfieldsize(int max) setmaxrows(int max) setquerytimeout(int seconds) PreparedStatement 반환타입 함수이름 지원여부 addbatch() clearparameters() boolean execute() ResultSet executequery() int executeupdate() ResultSetMetaData getmetadata() ParameterMetaData getparametermetadata() setarray(int i, Array x) setasciistream(int parameterindex, InputStream x, int length) setbigdecimal(int parameterindex, BigDecimal x) setbinarystream(int parameterindex, InputStream x, int length) setblob(int i, Blob x) setboolean(int parameterindex, boolean x) setbyte(int parameterindex, byte x) setbytes(int parameterindex, byte[] x) setcharacterstream(int parameterindex, Reader reader, int length) JAVA 개발가이드 29 page of 35
반환타입함수이름지원여부 setclob(int i, Clob x) setdate(int parameterindex, Date x) setdate(int parameterindex, Date x, Calendar cal) setdouble(int parameterindex, double x) setfloat(int parameterindex, float x) setint(int parameterindex, int x) setlong(int parameterindex, long x) setnull(int parameterindex, int sqltype) setnull(int paramindex, int sqltype, String typename) setbject(int parameterindex, bject x) setbject(int parameterindex, bject x, int targetsqltype) setbject(int parameterindex, bject x, int targetsqltype, int scale) setref(int i, Ref x) setshort(int parameterindex, short x) setstring(int parameterindex, String x) settime(int parameterindex, Time x) settime(int parameterindex, Time x, Calendar cal) settimestamp(int parameterindex, Timestamp x) settimestamp(int parameterindex, Timestamp x, Calendar cal) setunicodestream(int parameterindex, InputStream x, int length) seturl(int parameterindex, URL x) CallableStatement 반환타입 함수이름 지원여부 Array getarray(int i) Array getarray(string parametername) BigDecimal getbigdecimal(int parameterindex) BigDecimal getbigdecimal(int parameterindex, int scale) BigDecimal getbigdecimal(string parametername) Blob getblob(int i) Blob getblob(string parametername) boolean getboolean(int parameterindex) boolean getboolean(string parametername) byte getbyte(int parameterindex) byte getbyte(string parametername) byte[] getbytes(int parameterindex) byte[] getbytes(string parametername) Clob getclob(int i) Clob getclob(string parametername) Date getdate(int parameterindex) Date getdate(int parameterindex, Calendar cal) Δ Date getdate(string parametername) Date getdate(string parametername, Calendar cal) Δ double getdouble(int parameterindex) double getdouble(string parametername) JAVA 개발가이드 30 page of 35
반환타입함수이름지원여부 float getfloat(int parameterindex) float getfloat(string parametername) int getint(int parameterindex) int getint(string parametername) long getlong(int parameterindex) long getlong(string parametername) bject getbject(int parameterindex) bject getbject(int i, Map map) Δ bject getbject(string parametername) bject getbject(string parametername, Map map) Ref getref(int i) Ref getref(string parametername) short getshort(int parameterindex) short getshort(string parametername) String getstring(int parameterindex) String getstring(string parametername) Time gettime(int parameterindex) Time gettime(int parameterindex, Calendar cal) Δ Time gettime(string parametername) Time gettime(string parametername, Calendar cal) Timestamp gettimestamp(int parameterindex) Timestamp gettimestamp(int parameterindex, Calendar cal) Δ Timestamp gettimestamp(string parametername) Timestamp gettimestamp(string parametername, Calendar cal) URL geturl(int parameterindex) URL geturl(string parametername) registerutparameter(int parameterindex, int sqltype) registerutparameter(int parameterindex, int sqltype, int scale) registerutparameter(int paramindex, int sqltype, String typename) registerutparameter(string parametername, int sqltype) registerutparameter(string parametername, int sqltype, int scale) registerutparameter(string parametername, int sqltype, String typename) setasciistream(string parametername, InputStream x, int length) setbigdecimal(string parametername, BigDecimal x) setbinarystream(string parametername, InputStream x, int length) setboolean(string parametername, boolean x) setbyte(string parametername, byte x) setbytes(string parametername, byte[] x) setcharacterstream(string parametername, Reader reader, int length) setdate(string parametername, Date x) JAVA 개발가이드 31 page of 35
반환타입함수이름지원여부 setdate(string parametername, Date x, Calendar cal) setdouble(string parametername, double x) setfloat(string parametername, float x) setint(string parametername, int x) setlong(string parametername, long x) setnull(string parametername, int sqltype) setnull(string parametername, int sqltype, String typename) setbject(string parametername, bject x) setbject(string parametername, bject x, int targetsqltype) setbject(string parametername, bject x, int targetsqltype, int scale) setshort(string parametername, short x) setstring(string parametername, String x) settime(string parametername, Time x) settime(string parametername, Time x, Calendar cal) settimestamp(string parametername, Timestamp x) settimestamp(string parametername, Timestamp x, Calendar cal) seturl(string parametername, URL val) boolean wasnull() Blob 반환타입 함수이름 지원여부 InputStream getbinarystream() byte[] getbytes(long pos, int length) long length() long position(blob pattern, long start) long position(byte[] pattern, long start) utputstream setbinarystream(long pos) int setbytes(long pos, byte[] bytes) int setbytes(long pos, byte[] bytes, int offset, int len) truncate(long len) Clob 반환타입 함수이름 지원여부 int setstring(long pos, String str) int setstring(long pos, String str, int offset, int len) SavePoint 반환타입 함수이름 지원여부 int getsavepointid() String getsavepointname() JAVA 개발가이드 32 page of 35
javax.sql 패키지 ConnectionPoolDataSource 반환타입 함수이름 지원여부 int getlogintimeout() PrintWriter getlogwriter() PooledConnection getpooledconnection() PooledConnection getpooledconnection(string user, String password) setlogintimeout(int seconds) setlogwriter(printwriter out) DataSource 반환타입 함수이름 지원여부 Connection getconnection() Connection getconnection(string username, String password) int getlogintimeout() PrintWriter getlogwriter() setlogintimeout(int seconds) setlogwriter(printwriter out) PooledConnection 반환타입 함수이름 지원여부 A C o addconnectioneventlistener( ConnectionEventListener listener) close() nconnection getconnection() n removeconnectioneventlistener( e ConnectionEventListener listener) c AConnection 반환타입 함수이름 지원여부 AResource getaresource() ADataSource 반환타입 함수이름 지원여부 int getlogintimeout() PrintWriter getlogwriter() AConnection getaconnection() AConnection getaconnection(string user, String password) setlogintimeout(int seconds) setlogwriter(printwriter out) javax.sql 패키지 AResource 반환타입 함수이름 지원여부 commit(id xid, boolean onephase) end(id xid, int flags) forget(id xid) int gettransactiontimeout() JAVA 개발가이드 33 page of 35
반환타입 함수이름 지원여부 boolean issamerm(aresource xares) int prepare(id xid) id[ ] recover(int flag) rollback(id xid) boolean settransactiontimeout(int seconds) start(id xid, int flags) id 반환타입 함수이름 지원여부 byte[ ] getbranchqualfier() int getformatid() byte[ ] getglobaltransactionid() JAVA 개발가이드 34 page of 35
알티베이스 서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 1008 호 02-2082-1000 http://www.altibase.com 대전사무소 대전광역시서구둔산동 921 주은리더스텔 901 호 042-489-0330 기술본부 서울특별시구로구구로동우림e-biz센터 11 층 1101 호 02-2082-1000 기술지원센터 02-2082-1114 support@altibase.com ATC (ALTIBASE Technical Center) http://atc.altibase.com Copyright c 2000~2010 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된 ALTIBASE 제품의특징이나기능의개발, 발표등의시기는 ALTIBASE 재량입니다. ALTIBASE 는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. JAVA 개발가이드 35 page of 35