Altibase Installation Manual

Similar documents
ALTIBASE 사용자가이드 Templete

ALTIBASE 사용자가이드 Templete

Altibase Installation Manual

ALTIBASE 사용자가이드 Templete

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker ODBC 및 JDBC 가이드

Microsoft Word - ODBC

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Tibero RDBMS

Tibero

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

게시판 스팸 실시간 차단 시스템

13주-14주proc.PDF

DBMS & SQL Server Installation Database Laboratory

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

2009년 상반기 사업계획

Microsoft PowerPoint - 10Àå.ppt

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

단계

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

윈도우시스템프로그래밍

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

10.ppt

BMP 파일 처리

OnTuneV3_Manager_Install

강의 개요

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Install stm32cubemx and st-link utility

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

Microsoft Word - src.doc

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

C++ Programming

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Microsoft PowerPoint - chap06-2pointer.ppt

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

C++ Programming

금오공대 컴퓨터공학전공 강의자료

Altibase Starting User's Manual

Microsoft PowerPoint - chap01-C언어개요.pptx

윈도우시스템프로그래밍

Microsoft PowerPoint - ch07 - 포인터 pm0415

쉽게 풀어쓴 C 프로그래밍

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

FileMaker ODBC and JDBC Guide

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

JDBC 소개및설치 Database Laboratory

슬라이드 1

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

vi 사용법

Cloud Friendly System Architecture

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

슬라이드 1

본 강의에 들어가기 전

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

ALTIBASE HDB Patch Notes

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint 프레젠테이션

FileMaker ODBC and JDBC Guide

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

단계

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 04-UDP Programming.ppt

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

제1장 Unix란 무엇인가?

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

11장 포인터

초보자를 위한 ADO 21일 완성

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

rmi_박준용_final.PDF

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

슬라이드 1

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

ez-shv manual

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

The Pocket Guide to TCP/IP Sockets: C Version

C++-¿Ïº®Çؼ³10Àå

PowerPoint 프레젠테이션

untitled

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

C 언어 프로그래밊 과제 풀이

VS_chapter10

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

PCServerMgmt7

2014 학년도종합설계 1 차중간보고서 ( 스마트폰기반의나만의검색엔진 ) 성명학번 연락처 하희진 김태훈

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

PowerPoint Template


Transcription:

ALTIBASE HDB Application Development ODBC User's Manual Release 6.3.1 (April 17, 2015)

----------------------------------------------------------- ALTIBASE Application Development ODBC User's Manual Release 6.3.1 Copyright c 2001~2014 ALTIBASE Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 152-790 서울시구로구구로동 182-13 대륭포스트타워 Ⅱ 10 층전화 : 02-2082-1114 팩스 : 02-2082-1099 고객서비스포털 : http://support.altibase.com homepage: http://www.altibase.com -----------------------------------------------------------

목차 서문... 5 이매뉴얼에대하여... 6 1. 개요... 9 소개... 10 데이터타입... 11 ODBC API... 12 2. 설치및설정... 15 설치... 16 설정... 18 3. ODBC 프로그래밍... 21 연결문자열 (Connection String)... 22 기본프로그래밍예제... 23 Visual C++ 예제... 27 Visual C# 예제... 28 Visual Basic 예제... 29 LOB 사용예제... 30 찾아보기... 33 목차 3

서문 서문 5

이매뉴얼에대하여 이매뉴얼은 Altibase C API 의사용법에대해설명한다. 대상사용자 이매뉴얼은다음과같은 ALTIBASE HDB 사용자를대상으로작성되었다. 데이터베이스관리자 성능관리자 데이터베이스사용자 응용프로그램개발자 기술지원부 다음과같은배경지식을가지고이매뉴얼을읽는것이좋다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이터베이스사용경험또는데이터베이스개념에대한이해 컴퓨터프로그래밍경험 데이터베이스서버관리, 운영체제관리또는네트워크관리경험 소프트웨어환경 이매뉴얼은데이터베이스서버로 ALTIBASE HDB 버전 6.3.1 을 사용한다는가정하에작성되었다. 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장개요 제 2 장설치및설정 제 3 장 ODBC 프로그래밍 A. 부록 : FAQ 6 ODBC User's Manual

문서규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이 규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를 쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 규칙 기울임꼴 고정폭글꼴 의미구문요소에서사용자가지정해야하는변수, 특수한값을제공해야만하는위치지정자, 강조, 또는책제목단락또는예제코드내에있는명령어 온라인매뉴얼 Altibase 고객서비스포털 (http://support.altibase.com) 에서국문및 영문매뉴얼 (PDF, HTML) 을받을수있다. Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 보내실때에는아래내용과함께고객서비스포털 (http://support.altibase.com/kr/) 로보내주시기바랍니다. 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호 이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서이주소로보내주시면정성껏처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 서문 7

1. 개요 이장은 ALTIBASE HDB ODBC 드라이버를소개한다. 개요 9

소개 ODBC(Open Database Connectivity) 는마이크로소프트가만든, 데이터베이스에접근하기위한표준규격이다. ODBC API 를사용하여작성된 ODBC 애플리케이션이데이터베이스에접근하기위해서는 ODBC Driver Manager 같은 ODBC 소프트웨어외에, 접근하려는데이터베이스에서제공하는별도의모듈이나드라이버가필요하다. 이를위해 ALTIBASE HDB ODBC 드라이버가제공된다. ALTIBASE HDB ODBC 드라이버는 ODBC 3.51 스펙을준수한다. ALTIBASE HDB ODBC 드라이버는 ALTIBASE HDB CLI 기반으로작성되었으므로, ALTIBASE HDB ODBC 드라이버의내부동작이나세부적인지원사항은 ALTIBASE HDB CLI Manual 을참조해도무방하다. 10 ODBC User's Manual

데이터타입 ALTIBASE HDB 가지원하는 SQL 데이터타입과 ODBC 데이터 타입과의맵핑관계는 ALTIBASE HDB CLI Manual 의 "B. 부록 : 데이터형 " 을참조한다. 개요 11

ODBC API ODBC API에대한자세한내용은 ODBC API Reference 문서 (http://msdn.microsoft.com/enus/library/windows/desktop/ms714562%28v=vs.85%29.aspx) 를참조한다. ODBC Conformance Level 이절은현재 ALTIBASE HDB ODBC 에서현재지원하는함수들과 앞으로지원예정인함수들, 그리고지원되지않는함수들에대하여 ODBC 함수의적합성에입각하여설명한다. ODBC 의적합성레벨을매기는목적은애플리케이션에게 ODBC 드라이버의어떤기능을사용할수있는지에대한정보를제공하기위해서이다. 현재 ODBC 적합성레벨은 Core, Level 1, Level 2 의 3 가지로분류된다. 어떤함수의적합성레벨을만족시키기위해서는드라이버가그레벨에해당하는모든요구사항을충족해야한다. 아래에표는 ODBC 3.x 기준의적합성레벨이다. 이는 ODBC 2.x 의 적합성레벨과차이가있다. ODBC 2.x 에서의적합성레벨 1 은 여기에서 core 로보면된다. ALTIBASE HDB ODBC 드라이버는 ODBC 3.51 스펙을준수한다. 아래표는각 ODBC 함수의레벨과 ALTIBASE HDB ODBC 드라이버의지원여부를나타낸다. 함수이름 레벨 지원여부지원예정 비고 SQLAllocHandle Core O SQLBindCol Core O SQLBindParameter Core O SQLBrowseConnect Level1 X X SQLBulkOperations Level1 O SQLCancel Core O SQLCloseCursor Core O SQLColAttribute Core O SQLColumnPrivileges Level2 X X 칼럼에대한권한은 12 ODBC User's Manual

ALTIBASE HDB 에서 지원하지않음 SQLColumns Core O SQLConnect Core O SQLCopyDesc Core X O SQLDescribeCol Core O SQLDescribeParam Level2 O 완벽하게지원한다고볼수없음 SQLDisconnect Core O SQLDriverConnect Core O SQLEndTran Core O SQLExecDirect Core O SQLExecute Core O SQLFetch Core O SQLFetchScroll Core O SQLForeignKeys Level2 O SQLFreeHandle Core O SQLFreeStmt Core O SQLGetConnectAttr Core O SQLGetCursorName Core O SQLGetData Core O SQLGetDescField Core O ODBC 3.0 SQLGetDescRec Core O ODBC 3.0 SQLGetDiagField Core O ODBC 3.0 SQLGetDiagRec Core O ODBC 3.0 SQLGetEnvAttr Core O SQLGetFunctions Core O SQLGetInfo Core O SQLGetStmtAttr Core O SQLGetTypeInfo Core O SQLMoreResults Level1 O SQLNativeSql Core O SQLNumParams Core O 개요 13

SQLNumResultCols Core O SQLParamData Core O SQLPrepare Core O SQLPrimaryKeys Level1 O SQLProcedureColumns Level1 O SQLProcedures Level1 O SQLPutData Core O SQLRowCount Core O SQLSetConnectAttr Core O SQLSetCursorName Core O SQLSetDescField Core O ODBC 3.0 SQLSetDescRec Core O ODBC 3.0 SQLSetEnvAttr Core O SQLSetPos Level1 O SQLSetStmtAttr Core O SQLSpecialColumns Core O SQLStatistics Core O SQLTablePrivileges Level2 O SQLTables Core O 14 ODBC User's Manual

2. 설치및설정 이장은 ALTIBASE HDB ODBC 드라이버를설치하고설정하는 방법을유닉스계열과윈도우로나누어서설명한다. 설치및설정 15

설치 본절에서는유닉스와윈도우운영체제에서 ALTIBASE HDB ODBC 드라이버를설치하는방법에대해서기술한다. 유닉스계열 유닉스계열의경우 ALTIBASE HDB 서버또는클라이언트패키지를설치할때 ODBC 드라이버도함께설치된다. ALTIBASE HDB 서버또는클라이언트패키지를설치하는방법은 Installation Guide 를참조한다. 64 비트패키지를설치하면아래와같은 32 비트와 64 비트 ODBC 드라이버가모두 $ALTIBASE_HOME/lib 에설치될것이다. libaltibase_odbc-64bit-ul32.so: SQLLEN 의크기가 32 비트 libaltibase_odbc-64bit-ul64.so: SQLLEN 의크기가 64 비트 64 비트패키지에두개의드라이버가포함된이유는다음과같다. 64 비트 ODBC Driver Manager 들은 SQLLEN 타입의크기를 64bit 로정의하고있다. 그러나, 유닉스계열에서사용가능한 ODBC Driver Manager 중의하나인 unixodbc 가버전과컴파일옵션에따라 SQLLEN 의크기를 32bit 또는 64bit 로정의하기때문에, 모두를수용하기위해 ALTIBASE HDB 는두개의드라이버를제공한다. unixodbc 를사용하는경우 SQLLEN 크기가일치하는드라이버를선택하여사용하기바란다. 32 비트패키지를설치하면아래의파일이 $ALTIBASE_HOME/lib 에 위치하게된다. libaltibase_odbc.so HP 운영체제의경우위와동일한파일이름에확장자만 sl 이다. 윈도우 윈도우의경우에도 ALTIBASE HDB 서버또는클라이언트패키지를 설치할때 ODBC 드라이버를함께설치할수있다. ALTIBASE HDB 16 ODBC User's Manual

서버또는클라이언트패키지를설치하는방법은 Installation Guide 를참조한다. 윈도우환경에서는서버또는클라이언트패키지를설치하지않고 ODBC 드라이버파일만설치할수도있다. http://support.altibase.com에서 ODBC 드라이버설치파일을다운로드한후실행하면, ALTIBASE HDB ODBC 드라이버의 DLL이 system 폴더 ( 예를들어, Windows7 의경우 C:\Windows\system32) 에설치된다. 이에대한자세한내용은 Windows ODBC Driver Installer User's Guide를참조한다. 윈도우용 ALTIBASE HDB ODBC 드라이버 DLL 파일의이름은 altiodbc.dll 이다. 설치및설정 17

설정 본절에서는 Unix 와 Windows 에서 ODBC 드라이버를설정하는 방법에대해서기술한다. 유닉스계열 유닉스에서 ODBC 드라이버를사용하기위해서는먼저 ODBC Driver Manager 를설치해야한다. 유닉스용 ODBC Driver Manager 는 unixodbc Driver Manager 와 iodbc Driver Manager 가있다. 각 Driver Manager 에대한자세한내용은아래링크를참조한다. http://www.unixodbc.org/ http://www.iodbc.org/ 윈도우 설치에성공하면, [ 제어판 ] > [ 시스템및보안 ](Windows 7) > [ 관리 도구 ] > [ 데이터원본 (ODBC)] 을실행한후드라이버탭에서 ALTIBASE HDB ODBC 드라이버를확인할수있다. 18 ODBC User's Manual

DSN 추가 ODBC 애플리케이션에서접근하려는데이터베이스에대한 DSN 을추가한다. [ 데이터원본 (ODBC)] 의사용자 DSN 또는시스템 DSN 탭에서 " 추가 " 를누르면아래의대화상자가나타난다. ALTIBASE HDB 용 ODBC 드라이버를선택하고 " 마침 " 을누른다. "Altibase Connection Config" 창이나타나면아래의속성들을 입력한다. Windows DSN Name: 데이터원본의이름을입력한다. host (name or IP): 접속할 ALTIBASE HDB 서버가위치하는장비의호스트이름또는 IP 주소를입력한다. Port (default 20300): ALTIBASE HDB 서버의 listening 포트 설치및설정 19

번호를입력한다. altibase.properties 파일에서 PORT_NO 값을확인하거나 ALTIBASE_PORT_NO 환경변수값을확인한다. User: 데이터베이스사용자이름을입력한다. Password: 데이터베이스사용자비밀번호를입력한다. Database: 데이터베이스이름을입력한다. NLS_USE: 클라이언트의캐릭터셋을입력한다. "Test Connection" 을눌러서접속이정상적으로되는지확인할수 있다. "OK" 를누른후 DSN 탭에서방금입력한이름으로데이터 원본이추가된것을확인할수있다. 20 ODBC User's Manual

3. ODBC 프로그래밍 이장은 ALTIBASE HDB ODBC 드라이버를사용해서 ODBC 애플리케이션을작성하는방법을예제와함께설명한다. ODBC 프로그래밍 21

연결문자열 (Connection String) ALTIBASE HDB ODBC 를사용하여 ODBC 애플리케이션을작성할때 DSN 을사용하는대신에연결문자열을사용할수도있다. 연결 문자열은아래의속성으로구성된다. 속성 DRIVER User Password Server PORT NLS_USE LongDataCompat 설명 ODBC 드라이버의이름. ODBC 데이터원본관리자창에서확인할수있다. 데이터베이스사용자이름데이터베이스사용자비밀번호접속할 ALTIBASE HDB 서버의 IP 주소 ALTIBASE HDB 서버의 listening 포트번호클라이언트의캐릭터셋 ON 또는 OFF BLOB 같은대용량데이터를사용할경우 ON으로설정하길권장한다. 디폴트는 OFF이다. 다음은위의속성들을이용해서구성한연결문자열의예이다. "DRIVER=ALTIBASE_HDB_ODBC_64bit;User=SYS;Password=xxx;Server= 127.0.0.1;PORT=20300;NLS_USE=US7ASCII;LongDataCompat=OFF" 22 ODBC User's Manual

기본프로그래밍예제 ODBC 애플리케이션에서 ALTIBASE HDB 서버에접속하고종료하는예제코드과애플리케이션수행결과는다음과같다. 예제 /* test_odbc.cpp */ #include <windows.h> #include <sql.h> #include <sqlext.h> #include <stdio.h> #include <stdlib.h> #define SQL_LEN 1000 #define MSG_LEN 1024 SQLHENV SQLHDBC SQLHSTMT SQLRETURN henv; hdbc; hstmt; retcode; void execute_err(sqlhstmt stat, char* q) printf("error : %s\n",q); SQLINTEGER errno; SQLSMALLINT msglength; SQLTCHAR errmsg[msg_len]; if (SQL_SUCCESS == SQLError ( henv, hdbc, stat, NULL, &errno, errmsg, MSG_LEN, &msglength )) printf(" Error : # %lld, %s\n", errno, errmsg); SQLFreeStmt(stat, SQL_DROP); if (SQL_ERROR == SQLDisconnect(hdbc)) printf("disconnect error\n"); SQLFreeConnect(hdbc); SQLFreeEnv(henv); exit (1); void main() char *DSN, *DBNAME, *USERNAME, *PASSWD, *PORTNO; char query[sql_len], name[21]; int age; SQLCHAR constr[100]; SQLINTEGER len; DSN = "ALTIBASE"; // Domain Server Name /* Environment 을위한메모리를할당 */ if(sqlallocenv(&henv) == SQL_ERROR) printf("allocenv error!!\n"); ODBC 프로그래밍 23

exit(1); /* Connection 을위한메모리를할당 */ if(sqlallocconnect(henv, &hdbc) == SQL_ERROR) printf("allocdbc error!!\n"); SQLINTEGER errno; SQLSMALLINT msglength; SQLTCHAR errmsg[msg_len]; if (SQL_SUCCESS == SQLError ( henv, NULL, NULL, NULL, &errno, errmsg, MSG_LEN, &msglength )) printf(" Error : # %lld, %s\n", errno, errmsg); exit(1); /* Connection 을형성 */ sprintf((char*)constr, "DSN=%s", DSN); if ( SQLDriverConnect(hdbc, NULL, constr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE)) printf("dbname = %s\n", DBNAME); printf("username = %s\n", USERNAME); printf("connection error!!\n"); SQLINTEGER errno; SQLSMALLINT msglength; SQLTCHAR errmsg[msg_len]; if (SQL_SUCCESS == SQLError ( henv, hdbc, NULL, NULL, &errno, errmsg, MSG_LEN, &msglength )) printf(" Error : # %lld, %s\n", errno, errmsg); SQLFreeConnect(hdbc); SQLFreeEnv(henv); exit(1); printf("connected...\n"); /* statement 을위한메모리를할당 */ if ( SQLAllocStmt(hdbc, &hstmt) == SQL_ERROR ) printf("allocstmt error!!\n"); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); exit(1); /* 쿼리수행 */ sprintf(query,"drop TABLE TEST001"); SQLExecDirect(hstmt,(SQLTCHAR*)query, SQL_NTS); sprintf(query,"create TABLE TEST001 ( name varchar(20), age number(3) )"); if (SQL_ERROR == SQLExecDirect(hstmt,(SQLTCHAR*)query, SQL_NTS)) 24 ODBC User's Manual

execute_err(hstmt, query); /* statement 를준비하고변수를바인드한다. */ sprintf(query,"insert INTO TEST001 VALUES(?,? )"); if (SQL_ERROR == SQLPrepare(hstmt, (SQLTCHAR*)query, SQL_NTS)) execute_err(hstmt, query); if (SQL_ERROR == SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, name, 19, &len)) printf("sqlbindparameter error!!! ==> %s \n",query); exit(1); if (SQL_ERROR == SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_NUMERIC, 0, 0, &age, 0, &len)) printf("sqlbindparameter error!!! ==> %s \n",query); exit(1); /* 준비된 statement를수행 */ sprintf(name, " 김민석 "); age = 28; if (SQL_ERROR == SQLExecute(hstmt)) execute_err(hstmt, query); sprintf(name, " 홍길동 "); age = 25; if (SQL_ERROR == SQLExecute(hstmt)) execute_err(hstmt, query); sprintf(name, " 아무개 "); age = 34; if (SQL_ERROR == SQLExecute(hstmt)) execute_err(hstmt, query); sprintf(query,"select * FROM TEST001"); if (SQL_ERROR == SQLExecDirect(hstmt,(SQLTCHAR*)query, SQL_NTS)) execute_err(hstmt, query); /* Select 의결과값을변수에저장 */ if (SQL_ERROR == SQLBindCol(hstmt, 1, SQL_C_CHAR, name, 21, &len)) printf("sqlbindcol error!!!\n"); exit(1); ODBC 프로그래밍 25

if (SQL_ERROR == SQLBindCol(hstmt, 2, SQL_C_SLONG,&age, 0, &len)) printf("sqlbindcol error!!!\n"); exit(1); while ( SQLFetch(hstmt) == SQL_SUCCESS) // 결과값이있는동안결과값을받아화면에출력 */ printf("name : %5s, Age : %5ld\n",name,age); /* 모든 handle 을해제하고접속을종료 */ SQLFreeStmt(hstmt, SQL_DROP); SQLDisconnect(hdbc); SQLFreeConnect(hdbc); SQLFreeEnv(henv); 실행결과 Visual C++ 에서컴파일후생성된 exe 파일을실행시키면다음과같은결과를볼수있다. 26 ODBC User's Manual

Visual C++ 예제 #include <Afx.h> #include <Afxdb.h> #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) CDatabase db; try db.openex(_t("dsn=altibase ), CDatabase::noOdbcDialog); AfxMessageBox (_T("Connect OK")); catch (CDBException *e) AfxMessageBox(e->m_strError); return 0; 다음은 VC++ 에서 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("dsn=altibase", "", "", adconnectunspecified); MessageBox(NULL, (LPCSTR)"Successfully Connected.", (LPCSTR)"OK", 0); CoUninitialize(); catch (_com_error &ce) MessageBox(NULL, ce.errormessage(), (LPCSTR)"Error", 0); return 0; ODBC 프로그래밍 27

Visual C# 예제 Sub Main() Dim cn As Odbc.OdbcConnection Dim cmd As Odbc.OdbcCommand Dim dr As Odbc.OdbcDataReader cn = New Odbc.OdbcConnection cmd = New Odbc.OdbcCommand cn.connectionstring = "DSN=ALTIBASE" Try cn.open() Console.WriteLine("Successfully Connected.") 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 28 ODBC User's Manual

Visual Basic 예제 Sub Main() Dim cn As Odbc.OdbcConnection Dim cmd As Odbc.OdbcCommand Dim dr As Odbc.OdbcDataReader cn = New Odbc.OdbcConnection cmd = New Odbc.OdbcCommand cn.connectionstring = "DSN=ALTIBASE" Try cn.open() Console.WriteLine("Successfully Connected.") 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 ODBC 프로그래밍 29

LOB 사용예제 이절은 ALTIBASE HDB ODBC 드라이버를사용해서 LOB 데이터를 조작하는방법을예제를통해살펴본다. ALTIBASE HDB 의 LOB Locator 특성상세션의자동커밋을해제한상태 (Non-autocommit) 에서 LOB 데이터를조작해야한다. 자세한내용은 ALTIBASE HDB CLI Manual 에서 3 장 LOB 인터페이스를참조한다. 또한다음과같이연결문자열에서 LongDataCompat 속성을 ON 으로설정해야한다. "DSN=ALTIBASE;LongDataCompat=ON" 또는 "DRIVER=ALTIBASE_HDB_ODBC_64bit;User=SYS;Password=xxx;Server= 127.0.0.1;PORT=20300;NLS_USE=US7ASCII;LongDataCompat=ON" 아래는 C# 에서 BLOB 데이터를테이블에삽입하고조회하는 예제이다. FileStream fs = new FileStream("c:\\test.dat", FileMode.Open, FileAccess.Read); 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); 30 ODBC User's Manual

fs = new FileStream("c:\\test.dat", FileMode.CreateNew, FileAccess.Write); fs.write(ff, 0, len); fs.close(); ODBC 프로그래밍 31

찾아보기 C Conformance Level... 12 Connection String... 22 D DSN 추가... 19 I iodbc Driver Manager... 18 L LOB... 30 U unixodbc Driver Manager... 18 V Visual Basic... 29 Visual C#... 28 Visual C++... 27 ㄷ데이터원본 (ODBC)... 18 ㅅ설정... 18 설치... 16 소개... 10 ㅇ연결문자열... 22 ㅈ 적합성레벨... 12 찾아보기 33