ADO 연결 MS SQL
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
프로그램 클래스 에서 대화 식 COM 구성 요 소 를 초기 화 합 니 다:
CWinApp::InitInstance();
AfxEnableControlContainer();
AfxOleInit();//COM 구성 요소 초기 화 // 표준 초기 화 // 이 기능 을 사용 하지 않 고 줄 이 기 를 원한 다 면
작업 데이터베이스 클래스:
\ # pragma once / / 데이터베이스 에 접근 하 는 클래스 클래스 DBAccess {private: ConnectionPtr m ConnectionPtr; / 연결 포인터 RecordsetPtr m RecordsetPtr; / 결과 문자 집합 CString m ConnectString; / 연결 문자열 public: DBAccess (void); ~ DBAccess (void); / / 기록 집합 포인터 RecordsetPtr getRecordsetPtr (void); / / 데이터베이스 BOOL ConnectDB (void) 연결; / / 데이터베이스 연결 을 끊 은 void DisconnectDB (void); / / SQL 문 구 를 실행 하 는 BOOL Select (CString sql); / / 데이터 BOOL 업데이트 (CString sql);}; \ #include "Stdafx. h" \ # include "DBAccess. h" DBAccess:: DBAccess (void) {m ConnectString = L "driver = {SQL Server}; Server = 127.0.1; DATABASE = personMIS; UID = sa; PWD = 123456"; m ConnectionPtr. CreateInstance ( uuidof (Connection));} DBAccess:: ~ DBAccess (void) {} / / 기록 집합 포인터 가 져 오기RecoRecordsetPtr DBAccess:: getRecorecordsetPtr (void) {retm RecoRecordsetPtr;} / / 데이터베이스 에 연결 되 어 있 는 BOOLDBAccess:: ConnectDB (void) {m ConnectonPtr - > ConnectTimeout = 2; HRESUL시간 이 = 2; {hr = m ConnectonPtr - > (m ConnectString. allocSysString (), "", ",", ", adModUnknow알 수 없 음);;} catch ( com erre) {AfxMessageBox (e. 설명 (e..)); 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; (SUCCDEDEDED ((SUCCCD (hr){return 1;} return 0;} / 데이터베이스 에 연 결 된 void DBAccess 를 끊 습 니 다.: DisconnectDB (void) {if (m ConnectionPtr - > State = 1) {m ConnectionPtr - > Close ();} / 데이터베이스 BOOL DBAccess:: Select (CString sql) {if (m ConnectionPtr - > State = 1) {m RecordsetPtr. CreateInstance ( uuidof (Recordset)); m_RecordsetPtr->CursorLocation=adUseClient; _variant_t var; try { m_RecordsetPtr->Open(sql.AllocSysString(),m_ConnectionPtr.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } catch (_com_error e) { AfxMessageBox(e.Description()); return 0; } if(m_RecordsetPtr->adoEOF) { return 0; } return 1; } return 0; }/ / 업데이트 데이터 BOOL DBAccess::: Update (CString sql) {if (m ConnectionPtr - > State = = 1) { variant t var; try {m ConnectionPtr - > Execute (sql. AllocSysString (), & var, adcmdText);} catch ( com error e) {AfxgeBox (e. Description ()); return 0;} return 1;} return 0;}
결과 가 집 중 된 데 이 터 를 옮 겨 다 니 기:
DBAccess x; if(x.ConnectDB()==1) { if(x.Select(L"select * from student")) { CString str,str1; while(!x.getRecordsetPtr()->adoEOF) { str1.Format(L"%d",x.getRecordsetPtr()->GetCollect(_variant_t("id")).intVal); str+=str1; x.getRecordsetPtr()->MoveNext(); } MessageBox(str); } x.DisconnectDB(); }
데이터 형식 변환:
GetCollect 함수 로 되 돌아 오 는 종 류 는 variant 입 니 다.
variant t 에서 다른 유형의 변환:
void ChangeType(
VARTYPE vartype,
const _variant_t* pSrc = NULL
);
VARTYPE :
VT_EMPTY
Variable type is not specified.
VT_NULL
Variable type is NULL.
VT_I2
Variable type is 2-byte signed INT.
VT_I4
Variable type is 4-byte signed INT.
VT_R4
Variable type is 4-byte real.
VT_R8
Variable type is 8-byte real.
VT_CY
Variable type is currency.
VT_DATE
Variable type is date.
VT_BSTR
Variable type is binary string.
VT_DISPATCH
Variable type is
IDispatch FAR*.
VT_ERROR
Variable type is SCODE.
VT_BOOL
Variable type is Boolean; True=-1, False=0.
VT_VARIANT
Variable type is
VARIANT FAR*.
VT_UNKNOWN
Variable type is
IUnknown FAR*.
VT_UI1
Variable type is unsigned char.
VT_RESERVED
This element is reserved.
VT_BYREF
Variable type is a pointer to data.
VT_ARRAY
Variable type is a safe array.
:
_variant_t var=_varinat_t("haha");
var.ChangeType(VT_BSTR);
CString str=var;
다른 유형 에서 variant t 로 의 변환:
보통 variant t (값)
예 를 들 어 variant t (50); 주의해 야 할 것 은 이런 방법 은 각 유형 간 에 쉽게 전환 할 수 있다 는 것 이다.
다음은 MSDN 상세 정보.
_variant_t( ) Constructs an empty _variant_t object, VT_EMPTY.
_variant_t( VARIANT& varSrc ) Constructs a _variant_t object from a copy of the VARIANT object. The variant type is retained.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.