데이터베이스 매크로 및 전역
아래에 나열된 매크로 및 전역은 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
합니다. AfxDbInitModule
CDynLinkLibrary
는 일반 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_ASYNC
는 SQL_STILL_EXECUTING
를 반환할 수 있는 ODBC API 함수를 호출하기 위해 사용되었습니다. ODBC API 함수가 SQL_STILL_EXECUTING
을 반환한 경우, AFX_SQL_ASYNC
가 prs->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