레이블이 ocilib인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ocilib인 게시물을 표시합니다. 모든 게시물 표시

2015년 11월 25일 수요일

Date/time manipulation IN OCIlib

Date/time manipulation

Detailed Description

OCILIB encapsulates Oracle SQL Date datatype within OCI_Date structure
Basically, the OCI_Date routines are wrappers around the Oracle OCIDate APIs

Example

#include "ocilib.h"#define SIZE_STR 260

int
main(void)
{
  OCI_Date *d1, *d2;
  char str[SIZE_STR+1];
  if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT))
    return EXIT_FAILURE;

  d1 = OCI_DateCreate(NULL);
  d2 = OCI_DateCreate(NULL);
  strcpy(str, "13041978 20:20:12");

  OCI_DateFromText(d1, str, "DDMMYYYY HH24:MI:SS");
  OCI_DateToText(d1, "DD/MM/YYYY HH24:MI:SS", SIZE_STR, str);
  printf("\nDate is %s\n", str);

  OCI_DateSysDate(d1);
  OCI_DateToText(d1, "DD/MM/YYYY HH24:MI:SS", SIZE_STR, str);
  printf("\nSysdate is %s\n", str);

  OCI_DateAddDays(d1, 5);
  OCI_DateAddMonths(d1, 2);
  OCI_DateToText(d1, "DD/MM/YYYY HH24:MI:SS", SIZE_STR, str);
  printf("\nDate + 5 days and 2 months is %s\n", str);

  OCI_DateAssign(d2, d1);
  OCI_DateLastDay(d1);
  OCI_DateToText(d1, "DD/MM/YYYY HH24:MI:SS", SIZE_STR, str);
  printf("\nLast day of the month : %s\n", str);
  printf("\nNumber of days until the end of the months : %i\n", OCI_DateDaysBetween(d1, d2));

  OCI_DateFree(d1);
  OCI_DateFree(d2);
  OCI_Cleanup();

  return EXIT_SUCCESS;
}

2015년 8월 31일 월요일

Oracle(OCI Library) Error 처리

Oracle(OCI Library) Error 처리



1. 에러핸들러(Error handler) 이용


#include "ocilib.h"

void err_handler(OCI_Error *err)
{
  printf("code  : ORA-%05i\n"
         "msg   : %s\n"
         "sql   : %s\n",
         OCI_ErrorGetOCICode(err), 
         OCI_ErrorGetString(err),
         OCI_GetSql(OCI_ErrorGetStatement(err)));
}
  
int main()
{
  OCI_Connection *cn;
  
  if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT))
        return EXIT_FAILURE;
  
  cn = OCI_ConnectionCreate("wrong_db", "wrong_usr", "wrong_pwd", 
                            OCI_SESSION_DEFAULT);
  
  /* ... application code here ... */
  
  OCI_Cleanup();
  
  return EXIT_SUCCESS;
}



2. 함수(Function)에서 에러 출력


#include "ocilib.h"
  
int main()
{
  OCI_Connection *cn;
  
  if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT | OCI_ENV_CONTEXT))
    return EXIT_FAILURE;
  
  cn = OCI_ConnectionCreate("wrong_db", "wrong_usr", "wrong_pwd", OCI_SESSION_DEFAULT);
  
  if (cn == NULL)
  {
     OCI_Error *err = OCI_GetLastError();
     printf("errcode %d, errmsg %s", OCI_ErrorGetOCICode(err),  OCI_ErrorGetString(err));
  }
  
  OCI_Cleanup();
  
  return EXIT_SUCCESS;
}


자세한 내용은 여기로.

2015년 7월 30일 목요일

Centos c/c++ OCILIB 개발환경 구축(설치) & 설정

Centos c/c++ OCILIB 개발환경 구축

# OCILIB 설치


진행하는 프로젝트에서 뜻하지 않게 유닉스환경에서 오라클과 연동이 필요한 기능이 생겨버리고 말았다.
기존에 윈도우환겨에서만 코딩을 하던 나에겐 리눅스/유닉스 환경이라는 생소한 개발환경이 주는 의미를 미처 다 파악하기도 전에 오랜만에 삽질은 시작되고 말았다.
윈도우의 다음다음 하는 설치의 단순함과 간편함에 젖어 살던 나에게 리눅스라 놈은 나의 1주일이란 시간을 개발환경 구축에만 쏟아 붇게 만들었다.

구축 환경 ( virtualbox, Centos6.4 xwindow  )

일단 gcc등의 컴파일러 관련 설정은 다 되어 있다고 가정하고 글을 진행한다.

(원본보기)
(두번째 보기)