************ 안창근님 강좌를 제가 보기 편하게 편집(?) 하였습니다. **********
무지 쉽게 써주셨는데 제가 워낙 초보다 보니 어리버리 하고 에러가 뜨는군요 ㅜㅜ
그래서 더더욱더 간단히 정리 해서 다시 올렸습니다. 나중에 제가 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=
****************************************************************************************************************
****************************************************************************************************************
무지 쉽게 써주셨는데 제가 워낙 초보다 보니 어리버리 하고 에러가 뜨는군요 ㅜㅜ
그래서 더더욱더 간단히 정리 해서 다시 올렸습니다. 나중에 제가 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 |