검색어 'occi'에 대한 1 개의 검색 결과

  1. 2009/10/29 oracle-vs2008 연동 by dhappy

oracle-vs2008 연동

2009/10/29 17:52 / 컴퓨터

오라클 - VS2008 연동

먼저 OCI/OCCI를 사용하려고 했다.
하지만 10g사용했더니 에러 발생...instant client, occi....10~11버전을 다 해봤지만 실패다
연결안되고, 처음에는 문자열길이가 255가 넘는다고 했었나..그런 에러가 발생했다

두번째는 ODBC쓸려고 했는데 복잡한것같고 매뉴얼도 잘검색이 안돼서 하다가 포기...

세번째로 oralib라는걸 찾아서 해봤다. 소스를 보니까 2002년도거였나...
하지만 잘 작동한다

먼저 몇마디 하자면 내 시스템에서는 이대로 따라하면 잘 되지만,
다른 시스템에서는 안 될 수도있다...
헤더파일, 라이브러리 파일 path라든지...debug, release옵션이라든지...
사실 옵션 설정할줄도 모르는데 어쩌다가 되길래 써둔것 뿐이다...
정확한 방법을 아는사람이 있으면 코멘트 해주시길...

--------------------------------------------------------------------------------

1. oracle instant client다운로드

2. oralib 다운로드 및 컴파일
   (내가 사용한건 이미 컴파일된 oralib.lib파일로, release모드에서만 제대로 쓸수있는것 같다...)
   lib파일을 프로젝트메인디렉토리 ../oralib/에 복사

3. VS셋팅에 include디렉토리, library디렉토리 추가 : instant client폴더 안에 있는걸 추가.
예) C:\oracle\product\10.2.0\db_1\OCI\include
      C:\lib_include\instantclient_11_1\sdk\lib\msvc

4. 프로젝트 생성 시: static library 사용 체크

5. release 모드로 변경

6. 프로젝트 설정에 linker-input-additional dependency 에 oci.lib ociw32.lib 추가
   일반 설정에 멀티바이트 코드로 변경

7. stdafx.h에 다음내용 추가

#include <vector>

#include <iostream>
#include <map>
#include <string>

# include <oci.h>

#pragma comment(lib, "../oralib/oralib.lib")
#include "../oralib/oralib.h"
using namespace oralib;

using namespace std;


8. dlg파일등 오라클 연결 테스트 함수에 다음 내용 추가


 CString strTableName, strSql;
 strTableName = "테이블 명";
 int seqnumber;
 strSql.Format("select seq from %s ",strTableName);
 try
 {
  oralib::connection cn ("오라클sid", "계정", "암호");
  resultset &rs = *cn.select (strSql);
  if (!rs.eod ()){
   do{
    seqnumber = (int) rs ["SEQ"];
    CString temp;
    temp.Format("%d",seqnumber);
    AfxMessageBox(temp);

   }
   while (++rs);
   rs.release ();
  }
 }

 catch (oralib::error &e)
 {
  AfxMessageBox(e.details().c_str());  
 }
 catch (...)
 {
  AfxMessageBox("unrecognized error occured!\n");
 }


2009/10/29 17:52 2009/10/29 17:52
dhappy 이 작성.