레코드 집합: 레코드 필터링(ODBC)

이 항목은 MFC ODBC 클래스에 적용됩니다.

이 항목에서는 사용 가능한 레코드의 특정 하위 집합만 선택하도록 레코드 집합을 필터링하는 방법을 설명합니다. 예를 들어 MATH101 같은 특정 과정에 대한 수업 섹션만 선택할 수 있습니다. 필터는 SQL WHERE 절의 내용으로 정의된 검색 조건입니다. 프레임워크가 레코드 집합의 SQL 문 에 추가하면 WHERE 절은 선택 영역을 제한합니다.

개체를 생성한 후 멤버 함수를 호출 Open 하기 전에 또는 이전에 멤버 함수가 호출된 기존 레코드 집합 개체에 대한 멤버 함수를 호출 Requery 하기 전에 레코드 집합 개체의 Open 필터를 설정해야 합니다.

레코드 집합 개체에 대한 필터를 지정하려면

  1. 새 레코드 집합 개체를 생성하거나 기존 개체를 호출 Requery 할 준비를 합니다.

  2. 개체 의 m_strFilter 데이터 멤버 값을 설정합니다.

    필터는 SQL WHERE 절의 내용을 포함하지만 키워드(keyword) WHERE는 포함하지 않는 null로 끝나는 문자열입니다. 예를 들어 이에 해당하는 서비스는 다음과 같습니다.

    m_pSet->m_strFilter = "CourseID = 'MATH101'";
    

    not

    m_pSet->m_strFilter = "WHERE CourseID = 'MATH101'";
    

    참고 항목

    리터럴 문자열 "MATH101"은 위의 작은따옴표로 표시됩니다. ODBC SQL 사양에서 작은따옴표는 문자열 리터럴을 나타내는 데 사용됩니다. 이 상황에서 DBMS의 따옴표 요구 사항은 ODBC 드라이버 설명서를 확인하세요. 이 구문은 이 항목의 끝부분에 대해서도 자세히 설명합니다.

  3. 정렬 순서, 잠금 모드 또는 매개 변수와 같이 필요한 다른 옵션을 설정합니다. 매개 변수를 지정하는 것이 특히 유용합니다. 필터 매개 변수화에 대한 자세한 내용은 Recordset: ODBC(Recordset 매개 변수화)를 참조하세요.

  4. 새 개체(또는 Requery 이전에 연 개체)를 호출 Open 합니다.

필터에서 매개 변수를 사용하는 것이 레코드를 검색하는 가장 효율적인 방법입니다.

레코드 집합 필터는 테이블을 조인하고 런타임에 가져오거나 계산한 정보를 기반으로 매개 변수를 사용하는 데 유용합니다.

레코드 집합은 지정한 검색 조건을 충족하는 레코드만 선택합니다. 예를 들어 위에서 설명한 과정 필터를 지정하려면(예를 들어 현재 변수 strCourseID 가 "MATH101"로 설정되어 있다고 가정) 다음을 수행합니다.

// Using the recordset pointed to by m_pSet

// Set the filter
m_pSet->m_strFilter = "CourseID = " + strCourseID;

// Run the query with the filter in place
if ( m_pSet->Open( CRecordset::snapshot, NULL, CRecordset::readOnly ) )

// Use the recordset

레코드 집합에는 MATH101 대한 모든 클래스 섹션에 대한 레코드가 포함됩니다.

문자열 변수를 사용하여 위의 예제에서 필터 문자열을 설정하는 방법을 확인합니다. 일반적인 사용법입니다. 그러나 과정 ID에 리터럴 값 100을 지정하려고 한다고 가정해 보겠습니다. 다음 코드에서는 리터럴 값으로 필터 문자열을 올바르게 설정하는 방법을 보여 있습니다.

m_strFilter = "StudentID = '100'";   // correct

작은따옴표 문자를 사용합니다. 필터 문자열을 직접 설정하면 필터 문자열은 다음이 아닙니다.

m_strFilter = "StudentID = 100";   // incorrect for some drivers

위에 표시된 따옴표는 ODBC 사양을 따르지만 일부 DBMS에는 다른 따옴표 문자가 필요할 수 있습니다. 자세한 내용은 SQL: 레코드 집합의 SQL 문 사용자 지정(ODBC)을 참조하세요.

참고 항목

고유한 SQL 문자열을 전달하여 레코드 집합의 기본 SQL 문자열을 재정의하도록 선택하는 경우 사용자 지정 문자열Open에 WHERE 절이 있는 경우 필터를 설정하면 안 됩니다. 기본 SQL을 재정의하는 방법에 대한 자세한 내용은 SQL: ODBC(Recordset의 SQL 문 사용자 지정)를 참조하세요.

참고 항목

레코드 집합(ODBC)
레코드 집합: 레코드 정렬(ODBC)
레코드 집합: 레코드 집합의 레코드 선택 방법(ODBC)
레코드 집합: 레코드 집합의 레코드 업데이트 방법(ODBC)
레코드 집합: 레코드 잠금(ODBC)