다음을 통해 공유


데이터베이스 매크로 및 전역

아래에 나열된 매크로 및 전역은 ODBC 기반 데이터베이스 애플리케이션에 적용됩니다. DAO 기반 애플리케이션에는 사용되지 않습니다.

MFC 4.2 이전에는 매크로가 AFX_SQL_ASYNC AFX_SQL_SYNC 비동기 작업에 다른 프로세스에 시간을 할애할 수 있는 기회를 제공했습니다. MFC 4.2부터 MFC ODBC 클래스는 동기 작업만 사용했기 때문에 이러한 매크로의 구현이 변경되었습니다. 매크로 AFX_ODBC_CALL 는 MFC 4.2의 새로운 기능입니다.

데이터베이스 매크로

속성 설명
AFX_ODBC_CALL 를 반환하는 ODBC API 함수를 호출합니다 SQL_STILL_EXECUTING. AFX_ODBC_CALL 는 더 이상 반환되지 않을 때까지 함수를 반복적으로 호출합니다 SQL_STILL_EXECUTING.
AFX_SQL_ASYNC AFX_ODBC_CALL.
AFX_SQL_SYNC 반환 SQL_STILL_EXECUTING되지 않는 ODBC API 함수를 호출합니다.

데이터베이스 전역

속성 설명
AfxDbInitModule MFC에 동적으로 연결된 일반 MFC DLL에 대한 데이터베이스 지원을 추가합니다.
AfxGetHENV MFC에서 현재 사용 중인 ODBC 환경에 대한 핸들을 검색합니다. 직접 ODBC 호출에서 이 핸들을 사용할 수 있습니다.

AfxDbInitModule

MFC에 동적으로 연결된 일반 MFC DLL의 MFC 데이터베이스(또는 DAO) 지원의 경우 일반 MFC DLL 함수 CWinApp::InitInstance 에서 이 함수에 대한 호출을 추가하여 MFC 데이터베이스 DLL을 초기화합니다.

구문

void AFXAPI AfxDbInitModule( );

설명

MFC 데이터베이스 DLL에 액세스하는 기본 클래스 호출 또는 추가된 코드 전에 이 호출이 발생하는지 확인합니다. MFC 데이터베이스 DLL은 MFC 확장 DLL입니다. MFC 확장 DLL이 체인에 CDynLinkLibrary 연결되려면 이를 사용할 모든 모듈의 컨텍스트에서 개체를 만들어야 CDynLinkLibrary 합니다. AfxDbInitModuleCDynLinkLibrary 는 일반 MFC DLL의 개체 체인에 연결되도록 일반 MFC DLL의 컨텍스트에서 CDynLinkLibrary 개체를 만듭니다.

요구 사항

헤더:<afxdll_.h>

AFX_ODBC_CALL

이 매크로를 사용하여 반환 SQL_STILL_EXECUTING할 수 있는 ODBC API 함수를 호출합니다.

AFX_ODBC_CALL(SQLFunc)

매개 변수

SQLFunc
ODBC API 함수입니다. ODBC API 함수에 대한 자세한 내용은 Windows SDK를 참조하세요.

설명

AFX_ODBC_CALL 함수가 더 이상 반환되지 않을 때까지 함수를 반복적으로 호출합니다 SQL_STILL_EXECUTING.

호출하기 AFX_ODBC_CALL전에 RETCODE 형식의 변수 nRetCode를 선언해야 합니다.

MFC ODBC 클래스는 이제 동기 처리만 사용합니다. 비동기 작업을 수행하려면 ODBC API 함수 SQLSetConnectOption를 호출해야 합니다. 자세한 내용은 Windows SDK의 "비동기적으로 함수 실행" 항목을 참조하세요.

예시

이 예제에서는 이름이 지정된 strTableName테이블의 열 목록을 반환하는 ODBC API 함수를 호출 SQLColumns 하는 데 사용합니다AFX_ODBC_CALL. 레코드 집합 데이터 멤버의 nRetCode 선언 및 사용으로 매개 변수를 함수에 전달합니다. 또한 이 예제에서는 클래스CRecordset의 멤버 함수인 호출 Check결과를 확인하는 방법을 보여 줍니다. 변수 prs 는 다른 곳에서 선언된 개체에 대한 CRecordset 포인터입니다.

RETCODE nRetCode;

AFX_ODBC_CALL(::SQLColumns(prs->m_hstmt, (SQLTCHAR*)NULL, SQL_NTS, (SQLTCHAR*)NULL,
   SQL_NTS, (SQLTCHAR*)strTableName.GetBuffer(), SQL_NTS, (SQLTCHAR*)NULL, SQL_NTS));

if (!prs->Check(nRetCode))
{
   AfxThrowDBException(nRetCode, prs->m_pDatabase, prs->m_hstmt);
   TRACE(_T("SQLColumns failed\n"));
}

요구 사항

헤더: afxdb.h

AFX_SQL_ASYNC

이 매크로의 구현은 MFC 4.2에서 변경되었습니다.

AFX_SQL_ASYNC(prs, SQLFunc)

매개 변수

prs
CRecordset 개체 또는 CDatabase 개체에 대한 포인터입니다. MFC 4.2부터는 이 매개 변수 값이 무시됩니다.

SQLFunc
ODBC API 함수입니다. ODBC API 함수에 대한 자세한 내용은 Windows SDK를 참조하세요.

설명

AFX_SQL_ASYNC 는 단순히 매크로 AFX_ODBC_CALL 호출하고 prs 매개 변수를 무시합니다 . MFC 4.2 이전 버전에서, AFX_SQL_ASYNCSQL_STILL_EXECUTING를 반환할 수 있는 ODBC API 함수를 호출하기 위해 사용되었습니다. ODBC API 함수가 SQL_STILL_EXECUTING을 반환한 경우, AFX_SQL_ASYNCprs->OnWaitForDataSource를 호출합니다.

참고 항목

MFC ODBC 클래스에는 이제 동기적 처리만 사용됩니다. 비동기 작업을 수행하려면 ODBC API 함수 SQLSetConnectOption를 호출해야 합니다. 자세한 내용은 Windows SDK의 "비동기적으로 함수 실행" 항목을 참조하세요.

요구 사항

헤더 afxdb.h

AFX_SQL_SYNC

매크로는 AFX_SQL_SYNC 단순히 함수 SQLFunc를 호출합니다.

AFX_SQL_SYNC(SQLFunc)

매개 변수

SQLFunc
ODBC API 함수입니다. 이러한 함수에 대한 자세한 내용은 Windows SDK를 참조하세요.

설명

이 매크로를 사용하여 반환 SQL_STILL_EXECUTING되지 않는 ODBC API 함수를 호출합니다.

호출 AFX_SQL_SYNC하기 전에 RETCODE 형식의 변수 nRetCode를 선언해야 합니다. 매크로 호출 후의 nRetCode 값을 확인할 수 있습니다.

MFC 4.2에서 변경된 구현 AFX_SQL_SYNC 입니다. 서버 상태를 확인할 필요가 AFX_SQL_SYNC 더 이상 없으므로 값을 할당하기 nRetCode만 하면 됩니다. 예를 들어 호출을 하는 대신

AFX_SQL_SYNC(::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue));

간단히 할당할 수 있습니다.

nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue);

요구 사항

헤더 afxdb.h

AfxGetHENV

직접 ODBC 호출에서 반환된 핸들을 사용할 수 있지만 핸들을 닫거나 핸들이 여전히 유효하고 기존 CDatabase또는 CRecordset파생 개체가 제거된 후에도 사용할 수 있다고 가정해서는 안 됩니다.

HENV AFXAPI AfxGetHENV();

Return Value

현재 MFC에서 사용 중인 ODBC 환경에 대한 핸들입니다. SQL_HENV_NULL CDatabase 개체가 없고 CRecordset 개체가 없는 경우 사용할 수 있습니다.

요구 사항

헤더 afxdb.h

참고 항목

매크로 및 전역