Real Alternative DBMS ALTIBASE, Since 1999 ALTIBASE & Visual C++ 2010 Professional Edition 개발가이드 2014. 04 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved.
Document Control Change Record Date Author Change Reference 2011-09 khhan Created 2011-10 khhan Modified 2014-04 Khhan Modified Reviews Date Name (Position) Distribution Name Location ALTIBASE & Visual C++ 2010 Professional 개발가이드 2 page of 16
목차 개요... 4 개발전설정사항... 5 클라이언트패키지다운로드... 5 클라이언트패키지설치... 5 VC++ 프로젝트속성설정사항... 6 CLI 기반의프로젝트설정... 6 C 기반의프로젝트설정... 10 VC++ CLI 예제코드... 12 예제코드... 12 VC++ ADO 예제코드... 14 예제코드... 14 MFC (Microsoft Foundation Class Library) 방식... 15 OLEDB (Object Linking and Embedding, Database) 방식... 15 ALTIBASE & Visual C++ 2010 Professional 개발가이드 3 page of 16
개요 본문서는 Visual C++ 2010 Professional Edition 을기준으로 ALTIBASE 를기반으로하는개발가이드문서이다. ALTIBASE 버전은 5.5.1 을기반으로한다. 이후문서에는 Visual C++ 2010 Professional Edition 을 VC++ 이라고표기한다. ALTIBASE & Visual C++ 2010 Professional 개발가이드 4 page of 16
개발전설정사항 개발하기전에먼저 ALTIBASE CLI(Call Level Interface) 를이용하거나또는 ODBC 연동을위해서는 ALTIBASE 클라이언트패키지를설치해야한다. 여기서는클라이언트패키지를설치하는방법에대해설명한다. 클라이언트패키지다운로드 http://support.altibase.com 에접속하여 제품다운로드 에서 5.5.1 버전의클라이언트패키지를다운받도록한다. ( 본문서의작성시점에는 altibase-client-5.5.1.2.0-windows-x86-32bit-release.exe 가최신으로업로드되어있다.) 클라이언트패키지설치 패키지는실행파일로되어있고이를실행하면 Window Installer 에의해자동으로설치가완료된다. ( 별도의환경변수를필요로하지않음 ) ALTIBASE & Visual C++ 2010 Professional 개발가이드 5 page of 16
VC++ 프로젝트속성설정사항 VC++ 의프로젝트속성에서설정해야하는사항들을설명한다. 본문서에는 C 와 CLI 를기반으로개발하는경우이면서 release 모드의설정을기준으로설명한다. CLI 기반의프로젝트설정 1. 다음의메뉴를선택한다. ( 프로젝트 속성 ) 2. 구성속성 일반 문자집합부분에 ( 유니코드, 멀티바이트, 설정안함 ) 부분에서적절하게문자집합을설정한다. ( 본예제에서는설정안함으로선택한다.) ALTIBASE & Visual C++ 2010 Professional 개발가이드 6 page of 16
3. C/C++ 일반 추가포함디렉토리에 ALTIBASE 클라이언트패키지를설치한경로하위의 include 디렉토리를추가한다. ( 이경로에는 ODBC 표준헤더파일들이존재한다.) 4. C/C++ 코드생성 런타임라이브러리에서 다중스레드 (/MT) 옵션을설정한다. ( 만일, 디버깅모드로컴파일을한다면 다중스레드디버그 (/MTd) 옵션을사용하도록한다. 5. 링커 일반 추가라이브러리디렉토리부분에 ALTIBASE 클라이언트패키지를설치한경로하위의 lib 경로를추가한다. ALTIBASE & Visual C++ 2010 Professional 개발가이드 7 page of 16
6. 링커 입력 추가종속성부분에 odbccli.lib, netapi32.lib, ws2_32.lib, advapi32.lib, dbghelp.lib, iphlpapi.lib 를추가한다. 또한, 링커 특정기본라이브러리무시부분에 odbc32.lib 와 libcmt.lib 를추가한다. (libcmt.lib 를무시하도록추가하지않으면중복된오브젝트로인한컴파일오류가발생하게된다.) ALTIBASE & Visual C++ 2010 Professional 개발가이드 8 page of 16
정리하면다음과같은사항을설정해야한다. 1 문자집합설정 2 헤더및라이브러리경로를추가 3 필요한라이브러리명을추가하고특정라이브러리를무시하도록설정 4 컴파일옵션중 /MT를설정 간혹, 컴파일시에다음과같은오류가발생한다면 project/debug/ 모든파일을삭제한후컴파일을하도록한다. general error c101008a: Failed to save the updated manifest to the file ALTIBASE & Visual C++ 2010 Professional 개발가이드 9 page of 16
C 기반의프로젝트설정 프로젝트설정은다음사항을제외하고는 CLI 기반의프로젝트설정과동일하다. C 기반으로프로그램을하는경우반드시알티베이스 5.5.1.1.9 이상의버전을설치하여사용하여야한다. 그이전버전의라이브러리를사용하면컴파일시링크에러가발생한다. 1. C 기반으로프로그램을개발하는경우링커 입력 추가종속성부분에 odbccli.lib, netapi32.lib, ws2_32.lib, advapi32.lib, dbghelp.lib, iphlpapi.lib 외에도 apre.lib 를추가해줘야한다. 링커 입력 추가종속성부분에 apre.lib, odbccli.lib, netapi32.lib, ws2_32.lib, advapi32.lib, dbghelp.lib, iphlpapi.lib 를추가한다. 또한, 링커 특정기본라이브러리무시부분에 odbc32.lib 와 libcmt.lib 를추가한다. (libcmt.lib 를무시하도록추가하지않으면중복된오브젝트로인한컴파일오류가발생하게된다.) ALTIBASE & Visual C++ 2010 Professional 개발가이드 10 page of 16
정리하면다음과같은사항을설정해야한다. 1 문자집합설정 2 헤더및라이브러리경로를추가 3 필요한라이브러리명을추가하고특정라이브러리를무시하도록설정 4 컴파일옵션중 /MT를설정 간혹, 컴파일시에다음과같은오류가발생한다면 project/debug/ 모든파일을삭제한후컴파일을하도록한다. general error c101008a: Failed to save the updated manifest to the file ALTIBASE & Visual C++ 2010 Professional 개발가이드 11 page of 16
VC++ CLI 예제코드 CLI는 ALTIBASE가제공하는라이브러리를직접호출하는형태이기때문에일반적인 ODBC Driver나중간단계를거치지않고바로통신이가능하다. 따라서, 성능이요구되는경우가능한 CLI로개발할것을권장한다. 본단락에서는 VC++ 에서 CLI 형태의예제코드를어떻게사용하는지에대해설명한다. 예제코드 아래코드는 window console 프로그램형태의간단한 ALTIBASE 접속예제이다. // proj3.cpp // #include "stdafx.h" #include "sqlcli.h" int _tmain(int argc, _TCHAR* argv[]) { // SQL 핸들에대해선언 SQLHENV env = NULL; SQLHDBC dbc = NULL; SQLHSTMT stmt char username[20]; char passwd[20]; char nls[20]; char connstr[1024]; = NULL; // SQL 핸들에대한메모리확보 if (SQLAllocEnv (&env)!= SQL_SUCCESS) { printf ("SQLAllocEnv error!!\n"); return SQL_ERROR; } if (SQLAllocConnect(env, &dbc)!= SQL_SUCCESS) { printf ("SQLAllocConnect error!!\n"); return SQL_ERROR; } ALTIBASE & Visual C++ 2010 Professional 개발가이드 12 page of 16
// 접속정보설정 sprintf (username, "sys"); sprintf (passwd, sprintf (nls, "manager"); "MS949"); sprintf (connstr, "DSN=192.168.1.35;UID=%s;PWD=%s;CONNTYPE=%d;NLS_USE=%s;PORT_NO=27584", username, passwd, 1, nls); // 연결하기 if (SQLDriverConnect ( dbc, NULL, (SQLCHAR *)connstr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT )!= SQL_SUCCESS) { Printf ( SQLDriverConnect Error\n ); return SQL_ERROR; } } printf ( Connect OK\n ); CLI 와관련된예제코드는 ALTIBASE 클라이언트패키지를설치한경로하위의 samples/sqlcli/*.cpp 파일을참고하면된다. ALTIBASE & Visual C++ 2010 Professional 개발가이드 13 page of 16
VC++ ADO 예제코드 VC++ 에서 ADO는공통적인코드임으로 ALTIBASE에맞게별도의코드가존재하지않는다. 다만, 사전에필요시 ODBC Driver가등록되어있어야하며연결문자열부분의수정이필요하다. 본단락에서는 ADO에접속하는차이에대해예제코드를통해설명한다. 예제코드 다음과같이사용한다. 개발자는아래연결문자열을참조하도록한다. #include "stdafx.h" #include "windows.h" #import "C:\Program Files\Common Files\System\ado\msado15.dll" \ no_namespace rename("eof", "adoeof") int _tmain(int argc, _TCHAR* argv[]) { _ConnectionPtr pcon = NULL; try { CoInitialize(NULL); pcon.createinstance ( uuidof(connection)); pcon->mode = admodereadwrite; pcon->open("driver=altibase_odbc_cm511;user=sys;password=manager; Server=192.168.1.35;PORT=27584;NSL_USE=MS949", "", "", adconnectunspecified); } MessageBox(NULL, (LPCSTR)" 정상적으로연결되었습니다.", (LPCSTR)"OK", 0); CoUninitialize(); } catch (_com_error &ce) { MessageBox(NULL, ce.errormessage(), (LPCSTR)"Error", 0); } return 0; ALTIBASE & Visual C++ 2010 Professional 개발가이드 14 page of 16
MFC (Microsoft Foundation Class Library) 방식 VC++ 의경우는 afxdb.h 를통해 CDatabase, CRecordset Class 와같은이미정의된 class 를통해코딩이가능하다. 이와같은 class 를사용하는경우도함수자체의변동사항은없고다만, 타 DBMS 와비교하여위에언급한형태의연결문자열의사용만으로소스의변환이가능하다. OLEDB (Object Linking and Embedding, Database) 방식 ALTIBASE 가제공하는 OLEDB 방식은 ADO 에서 ODBC Driver 를통해접속하는방식이다. 여기서 ODBC Driver Manager 만거치지않는형태임을이해해야한다. C, C++, VB, ASP Client Application ADO (ActiveX Data Objects) OLE DB (Object Linked and Embedded) MSDASQL ODBC Manager Data Provider ODBC Driver OLE DB 인터페이스를통해 ALTIBASE 가제공하는 altioledb.dll 을호출하게되면해당 DLL 은다시 altiodbc.dll 을호출하는형태로동작을한다는의미이다. 사용자는 OLEDB형태의코드를위해서다음 2 가지사항을적용해야한다. 1. regsvr32 C:\ALTIBASE Client 설치경로 \lib\altioledb.dll 2. 소스에서의연결문자열의변경 Provider=Altibase.OLEDB.1; DSN=192.168.1.35;UID=sys;PWD=manager; Altibase='PORT=27584;NLS_USE=MS949' ALTIBASE & Visual C++ 2010 Professional 개발가이드 15 page of 16
알티베이스 서울특별시구로구구로 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 는이문서에대하여관련된특허권, 상표권, 저작권또는기타지적재산권을보유할수있습니다. ALTIBASE & Visual C++ 2010 Professional 개발가이드 16 page of 16