Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS 환경의 ALTIBASE ODBC 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved.
Document Control Change Record Date Author Change Reference 2010-09 Lim272 Created Reviews Date Name (Position) Distribution Name Location WINDOWS 환경의 ALTIBASE ODBC 개발가이드 2 page of 13
목차 개요... 4 ODBC DRIVER 설정사항... 5 ODBC Driver 다운로드... 5 ODBC Driver 설치... 6 제어판의 ODBC 설정... 6 ODBC DRIVER 개발가이드... 9 ODBC 연결문자열... 9 Visual C++ 예제소스... 9 Visual C# 예제소스... 10 Visual Basic 예제소스... 10 LOB 사용시주의사항... 11 WINDOWS 환경의 ALTIBASE ODBC 개발가이드 3 page of 13
개요 본문서는 WINDOWS 환경의 ALTIBASE 개발환경에서 ODBC Driver 를이용한각종개발툴의설정방법등을가이드한다. ALTIBASE 버전은 5.3 을기반으로하며문서를위해사용된 WINDOWS 의버전은 XP 이다. 연관되어다음과같은문서를참고하는것을권장한다. 1. WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2. WINDOWS OLEDB 환경의 ALTIBASE 개발가이드 WINDOWS 환경의 ALTIBASE ODBC 개발가이드 4 page of 13
ODBC Driver 설정사항 개발하기전에먼저 ALTIBASE ODBC 환경의개발을위해서는 ALTIBASE 가제공하는 ODBC Driver 를설치해야한다. 현재 http://atc.altibase.com 에서다운로드받을수있으며별도의설치과정없이 DLL 파일을제공받을수있다. ODBC Driver 다운로드 http://atc.altibase.com 에접속하여 제품다운로드 LIBRARY 부분으로이동하면 ODBC 파일을내려받을수있다. ALTIBASE 는제품버전별로 ODBC Driver 를제공하고있는데만일, 서버패키지와동일한버전을얻고자할경우는 CLIENT 부분에서동일한버전을사용하면된다. ( 웹사이트에없는이전버전인경우 support@altibase.com 으로문의하도록한다.) WINDOWS 환경의 ALTIBASE ODBC 개발가이드 5 page of 13
( 본문서의작성시점에는 altiodbc5.3.3.12.zip 파일이최신으로업로드되어있다.) ODBC Driver 설치 처음설치할경우라면 WINDOWS CLIENT 패키지를다운로드받아설치하도록한다. 설치파일에서는별도의복잡한진행과정이없어본문서에서는별도로설명하지않는다. 제어판의 ODBC 설정 ALTIBASE ODBC Driver 의등록을위해서는 시작 제어판 관리도구 데이터원본 (ODBC) 을클릭하여 ODBC 관리화면을구동시킨다. WINDOWS 환경의 ALTIBASE ODBC 개발가이드 6 page of 13
화면과같이 추가 버튼을클릭한다. 새로운창이뜬후 ALTIBASE_ODBC_CM511 이라는이름이확인이된다면 ODBC Driver 는정상적으로설치되었다고볼수있다. 해당 Driver 를선택한후 마침 버튼을클릭한다. 위와같은 DB접속설정화면이나오면다음과같은값을입력하도록한다. 항목 설명 예 Windows DSN Name 다른 DSN Name과구분되는고유한명칭 SERVER1 Host (name or IP) ALTIBASE DB Server가위치한 IP정보 192.168.1.35 Port (default 20300) ALTIBASE 엔진이 Listen 하는 Port정보 20300 User DB상의계정 sys Password DB계정의비밀번호 manager Database DB생성시점에만든고유의 DB_NAME 이름 mydb NLS_USE DB 생성시점에입력한문자셋정보 MS949 WINDOWS 환경의 ALTIBASE ODBC 개발가이드 7 page of 13
정상적으로입력후 Test Connection 버튼을클릭하면 ODBC Driver 를통해 ALTIBASE 서버로정상접속이되는지를체크해볼수있다. (ALTIBASE DBMS 가구동된상태이어야함.) 오류가날경우네트웍상태에다르지만일정시간이소요된후다음과같은에러경고창이나타난다. 정상적으로설정을하였다면아래와같이사용자가새롭게추가한 ODBC 항목이목록에추가되었음을확인할수있다. 제거나구성정보의변경은해당화면의 제거, 구성 버튼을클릭하여적용이가능하다. WINDOWS 환경의 ALTIBASE ODBC 개발가이드 8 page of 13
ODBC Driver 개발가이드 ODBC Driver 를통해 ALTIBASE 에접속할경우는별도의소스변환은크게필요하지않으며연결부분에 ODBC 연결문자열등의변경이필요하다. 앞서설명한프로젝트의별도설정은필요하지않으며 WINDOWS 에서필요한 ODBC driver 를연동할수있는헤더 (ex. windows.h, sql.h, sqlext.h, afxdb.h) 와라이브러리 (ex. odbc32.lib) 들을적절하게사용하여컴파일하면된다. ODBC 연결문자열 ODBC Driver 를이용한프로그램에서는다음과같이연결문자열을사용한다. 빨간색으로표기된부분은키워드로사용되는것이며파란색으로표기된부분은사용자가설치한서버의접속정보와 ODBC 버전에맞게값을변경하여사용하면된다. DRIVER=ALTIBASE_ODBC_CM511;user=sys;password=manager; Server=127.0.0.1;PORT=20300;NLS_USE=MS949;LongDataCompat=on DRIVER user password Server PORT NLS_USE ODBC 관리도구에서확인한 ALTIBASE Driver 이름 DB 사용자명 DB 사용자의패스워드 접속할 DB 서버의 IP DB 의 Listen Port 문자셋 LongDataCompat ON/OFF (BLOB등의대용량데이터를사용할경우 on으로설정 ) 아아래단락에서는 Visual C++/Basic/C# 에서의예제소스를사용하고있으며 ODBC 연결문자열 이라고표현한곳에는위의표에언급된내용을사용자환경에맞게변경하여사용하면된다. Visual C++ 예제소스 Visual C++ 에서의간단한연결예는아래와같다. #include <Afx.h> #include <Afxdb.h> #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) CDatabase db; try db.openex(_t("odbc연결문자열 ), CDatabase::noOdbcDialog); AfxMessageBox (_T("Connect OK")); catch (CDBException *e) WINDOWS 환경의 ALTIBASE ODBC 개발가이드 9 page of 13
AfxMessageBox(e->m_strError); return 0; Visual C# 예제소스 Visual C# 에서의간단한연결예는아래와같다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Odbc; namespace ConsoleApplication1 class Program static void Main(string[] args) OdbcConnection cn = new OdbcConnection(); try cn.connectionstring = ODBC연결문자열 ; cn.open(); Console.WriteLine("connect ok"); catch (OdbcException ex) Console.WriteLine(ex.Message); Console.ReadLine(); Visual Basic 예제소스 VIsual Basic 에서의예제는다음과같으며아래예제는 DB 에접속하여현재날짜와시간을가져오는소스로구현되어있다. (ADO 객체를사용하여도동일하다.) Sub Main() Dim cn As Odbc.OdbcConnection Dim cmd As Odbc.OdbcCommand Dim dr As Odbc.OdbcDataReader WINDOWS 환경의 ALTIBASE ODBC 개발가이드 10 page of 13
cn = New Odbc.OdbcConnection cmd = New Odbc.OdbcCommand cn.connectionstring = ODBC 연결문자열 Try cn.open() Console.WriteLine(" 정상적으로연결되었습니다 ") cmd.connection = cn cmd.commandtext = "SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL" dr = cmd.executereader() While (dr.read()) Console.WriteLine(dr.GetString(0)) End While Catch ex As Odbc.OdbcException Console.WriteLine(" 연결에오류가있습니다." + ex.message) End Try Console.ReadLine() End Sub LOB 사용시주의사항 ALTIBASE 의경우는 LOB 데이터타입을사용할경우반드시 DB 연결세션의속성을 Non-AutoCommit 으로변경한후사용이가능하다. 그렇지않을경우조회시점에 LOB 데이터타입에대해 Null 을가지고오거나삽입 / 변경시점에다음과같은에러를발생하게된다. Connection is in autocommit mode. One can not operate on LOB datas with autocommit mode on. 다음에서 C# 소스를통해 BLOB 데이터타입을테이블에삽입 / 조회하는예제를살펴보도록한다. ( 여타의개발언어에서도 ALTIBASE LOB 사용시트랜잭션의관리를해야한다는사실을반드시고려해야한다.) BLOB INSERT 의예제는 DB 연결이된상태에서앞써설명한바와같이세션의속성을 Non-AutoCommit 으로변경을하여 (C# 의경우트랜잭션의개시 ) 데이터를삽입하는예제이다. 사용된 blob 변수는 Byte[] 타입으로선언하였다. BLOB SELECT 의예제에서는 BLOB 타입의길이를알아내기위해 ALTIBASE 가제공하는 BINARY_LENGTH 라는함수를통해 Byte[] 변수를선언하고해당변수에데이터를저장후파일로생성하는예제로구성한경우이다. // BLOB INSERT FileStream fs = new FileStream("c:\\test.dat", FileMode.Open, FileAccess.Read); WINDOWS 환경의 ALTIBASE ODBC 개발가이드 11 page of 13
Byte[] blob = new byte[fs.length]; fs.read(blob, 0, System.Convert.ToInt32(fs.Length)); fs.close(); OdbcTransaction tx = cn.begintransaction(); cmd.transaction = tx; cmd.commandtext = "INSERT INTO T1 (C1, C2) VALUES (?,?)"; cmd.parameters.add("c1", OdbcType.Int); cmd.parameters.add("c2", OdbcType.Binary); cmd.parameters[0].value = 1; cmd.parameters[1].value = blob; cmd.executenonquery(); tx.commit(); // BLOB SELECT cmd.commandtext = "SELECT binary_length(c2), C2 FROM T1"; tx = cn.begintransaction(); cmd.transaction = tx; OdbcDataReader dr = cmd.executereader(); int len; while (dr.read()) len = dr.getint32(0); Byte[] ff = new Byte[len]; dr.getbytes(1, 0, ff, 0, len); fs = new FileStream("c:\\test.dat", FileMode.CreateNew, FileAccess.Write); fs.write(ff, 0, len); fs.close(); WINDOWS 환경의 ALTIBASE ODBC 개발가이드 12 page of 13
알티베이스 서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 1008 호 02-2082-1000 http://www.altibase.com 대전사무소대전광역시서구둔산동 921 주은리더스텔 901 호 042-489-0330 기술지원본부서울특별시구로구구로 3 동 182-13 대륭포스트 2 차 908 호 02-2082-1000 기술지원센터 02-2082-1114 http://support.altibase.com Copyright c 2000~2013 ALTIBASE Corporation. All Rights Reserved. 이문서는정보제공을목적으로제공되며, 사전에예고없이변경될수있습니다. 이문서는오류가있을수있으며, 상업적또는특정목적에부합하는명시적, 묵시적인책임이일체없습니다. 이문서에포함된 ALTIBASE 제품의특징이나기능의개발, 발표등의시기는 ALTIBASE 재량입니다. ALTIBASE는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. WINDOWS 환경의 ALTIBASE ODBC 개발가이드 13 page of 13