개요
Unix 환경에서 .odbc.ini 파일을 사용하여 Tibero 데이터베이스 접속을 테스트하는 방법과 샘플 코드를 설명합니다.
.odbc.ini 파일은 ODBC(Open Database Connectivity) 설정 정보를 저장하는 파일로, DSN(Data Source Name)을 등록하여 응용 프로그램이 데이터베이스에 접속할 수 있도록 합니다.
방법
odbc.ini 설정
계정 홈 디렉터리 아래에 $HOME/.odbc.ini 파일을 생성하고, 환경에 맞게 설정합니다.
[ODBC Data Sources]
tibero5 = Tibero5 ODBC driver
[ODBC_TEST]
Trace = 1
TraceFile = /home/tibero/iodbc/tmp/odbc.trace
[tibero5]
Driver = /home/tibero/tibero5/client/lib/libtbodbc.so
Description = Tibero5 ODBC Datasource
SID = fintac1
User = tibero
SQL
복사
tbdsn.tbr 설정 확인
ODBC 설정에서 참조하는 SID에 대한 접속 정보를 tbdsn.tbr에 등록합니다.
fintac1=(
(INSTANCE=(HOST=192.168.51.171)
(PORT=58629)
(DB_NAME=fintac)
)
)
SQL
복사
연결 샘플 코드
아래 odbctest.c는 .odbc.ini 파일에 등록된 DSN을 이용하여 Tibero DB에 접속하는 예제 코드입니다.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sqlcli.h>
//#include <sqlext.h>
// 전역 변수
#define SQL_LEN 1000
#define DATA_LEN 100
#define JOB_LEN 9
#define _SUCCESS 0
int main()
{
// 환경 변수
SQLRETURN retval;
SQLHENV henv;
SQLHDBC hdbc;
// ODBC 환경 메모리 할당
retval = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
// ODBC 버전 설정 (3.0)
retval = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
if(retval == SQL_SUCCESS || retval == SQL_SUCCESS_WITH_INFO)
printf("ODBC 환경속성 설정 성공.\n");
else
printf("ODBC 환경속성 설정 실패.\n");
// DB 연결용 메모리 할당
retval = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(retval == SQL_SUCCESS || retval == SQL_SUCCESS_WITH_INFO)
printf("ODBC 연결용 메모리 할당 성공.\n");
else
printf("ODBC 연결용 메모리 할당 실패.\n");
// 연결 속성 설정 및 DB 연결
SQLSetConnectAttr(hdbc,5,(void*)SQL_LOGIN_TIMEOUT,0);
retval = SQLConnect(hdbc,
(SQLCHAR *)"ODBC_TEST", SQL_NTS,
// .odbc.ini에등록된 DSN정보 /
(SQLCHAR *)"tibero", SQL_NTS,
(SQLCHAR *)"tmax", SQL_NTS);
if(retval == SQL_SUCCESS || retval == SQL_SUCCESS_WITH_INFO)
printf("ODBC 데이터베이스와의 연결 성공.\n");
else
printf("ODBC 데이터베이스와의 연결 실패.\n");
// 접속 해제
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
SQLFreeEnv(henv);
return 0;
}
SQL
복사
컴파일
운영체제 환경에 맞는 컴파일 명령을 사용합니다.
AIX gcc 예시
gcc -maix64 -Wl,-brtl -o odbctest odbctest.c -g \
-I$TB_HOME/client/include \
-L$TB_HOME/client/lib -ltbodbc -ltbertl -ltbcli -lpthread -lm
SQL
복사
Linux gcc 예시
gcc -o odbctest odbctest.c \
-I$TB_HOME/client/include \
-L$TB_HOME/client/lib -ltbodbc -lm -ldl
SQL
복사
주의
•
ltbodbc 옵션을 제외하면 .odbc.ini 파일을 인식하지 않고, tbdsn.tbr 설정을 먼저 인식하여 동작합니다.
•
OS에 따라 일부 컴파일 및 링크 옵션이 다를 수 있으므로 환경에 맞게 조정이 필요합니다.