본문 바로가기

Windows/MFC

ADODB Manual

************ 안창근님 강좌를 제가 보기 편하게 편집(?) 하였습니다. **********

무지 쉽게 써주셨는데 제가 워낙 초보다 보니 어리버리 하고 에러가 뜨는군요 ㅜㅜ
그래서 더더욱더 간단히 정리 해서 다시 올렸습니다. 나중에 제가 Ctrl+C ,Ctrl+v 할려구요 ㅜㅜ
다시 한번 안창근님 감사드립니다.^^ ~~
아래 링크의 원문을 꼭 읽어 보세요~~~~~
참고로 SQL 서버 연결 입니다.~
variant 형 조금 보시고 ado 클래스(형변환 때문에..)를 사용하시면 쉽게 사용가능할것으로 보입니다. ^^:
안창근님 말씀 처럼 역시 쿼리를 어떻게 만드느냐가 제일 중요한것 같네요..!!
빨간 색만 그대로 붙여넣기 해보세요~~
커넥션과 쿼리는 수정 하셔야 합니다.
안창근님 강좌 보시고 예외 처리도 하시구요.

stdafx.h 내부

------------ 아래코드 삽입 -----------------------------

#pragma warning(push)                         //ado 버그로 인한 컴파일시 경고 뜨는것 방지.
#pragma warning(disable:4146)
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
            rename("EOF", "EndOfFile") no_namespace
#pragma warning(pop)

-----------------------------------------------------
app 헤더
------------------
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
------------------
app 함수쪽
------------------

InitInstance 에 다음과 같이 삽입

if(FAILED(::CoInitialize(NULL))) {

AfxMessageBox("::CoInitialize 실패했습니다.\n프로그램을 정상적으로 사용할 수 없어서 종료합니다.", MB_ICONSTOP);

}

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


======================================================================

void CAdo_cnDlg::OnButton1()    
{                                            
_ConnectionPtr pConnection = NULL;    
_RecordsetPtr pRecordset=NULL;        


TESTHR(pConnection.CreateInstance(__uuidof(Connection)));

_bstr_t strCnn("Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security Info=True;User ID=xxxxxxxx;Initial Catalog=xxxx;Data Source=200.100.00.000");


    TESTHR(pConnection->Open(strCnn, L"", L"", -1));
    CString sQuery;
    sQuery.Format("select * from em_tran_test");                                                    
pRecordset = pConnection->Execute((_bstr_t)sQuery, NULL, adOptionUnspecified);

_variant_t vData;

while (!pRecordset->GetEndOfFile()) {

        vData = pRecordset->GetCollect(L"tran_date");        //tran_date 는 필드명임

     // 작업들

        pRecordset->MoveNext();

    }



    //도움말에 의거하면 다음 세 스텝은 자동으로 호출되기 때문에 없어도 된다고 함..

    pRecordset->Close();

    pConnection->Close();

    pConnection.Release();



}

=====================================================================



[삽입]

CString sQuery;

sQuery.Format("Insert Into 테이블명 (필드1, 필드2, 필드3, 필드4) values('%s', %d, %lf, 1)", sVal, nVal, dVal);

pRecordset = pConnection->Execute((_bstr_t)sQuery, NULL, adOptionUnspecified); //쿼리문 실행



[삭제]

CString sQuery;

sQuery.Format("delete from 테이블명 where 조건");

pRecordset = pConnection->Execute((_bstr_t)sQuery, NULL, adOptionUnspecified); //쿼리문 실행



[수정]

CString sQuery;

sQuery.Format('Update 테이블명 set 필드1=%lf, 필드2='%s', 필드3=%d where 조건", dVal1, sVal, dVal2);

pRecordset = pConnection->Execute((_bstr_t)sQuery, NULL, adOptionUnspecified); //쿼리문 실행







******************************************************* 아래 안창근님 강좌 원문 *********************************

http://www.devpia.com/Forum/BoardView.aspx?no=4643&page=1&Tpage=2&forumname=vc_lec&stype=&ctType=&answer=&KeyR=title&KeyC=



****************************************************************************************************************

****************************************************************************************************************

'Windows > MFC' 카테고리의 다른 글

ADODB options  (0) 2013.10.02
ADODB options  (0) 2013.10.02
_variant_t Casting  (0) 2013.10.02
Unicode 에서 Ascii로 변환  (0) 2013.10.02
CListCtrl SetExtendedStyle  (0) 2013.10.02