다음을 통해 공유


바인딩 결과 집합 열

애플리케이션은 열 바인딩을 포함하여 원하는 만큼 또는 적은 수의 결과 집합 열을 바인딩할 수 있습니다. 데이터 행을 가져오면 드라이버는 바인딩된 열의 데이터를 애플리케이션에 반환합니다. 애플리케이션이 결과 집합의 모든 열을 바인딩하는지 여부는 애플리케이션에 따라 달라집니다. 예를 들어 보고서를 생성하는 애플리케이션은 일반적으로 고정된 형식을 갖습니다. 이러한 애플리케이션은 보고서에 사용되는 모든 열을 포함하는 결과 집합을 만든 다음 이러한 모든 열에 대한 데이터를 바인딩하고 검색합니다. 데이터로 가득 찬 화면을 표시하는 애플리케이션을 사용하면 사용자가 표시할 열을 결정할 수 있습니다. 이러한 애플리케이션은 사용자가 원하는 모든 열을 포함하는 결과 집합을 만들지만 사용자가 선택한 열에 대해서만 데이터를 바인딩하고 검색합니다.

SQLGetData를 호출하여 언바운드 열에서 데이터를 검색할 수 있습니다. 일반적으로 단일 버퍼의 길이를 초과하고 파트에서 검색해야 하는 긴 데이터를 검색하기 위해 호출됩니다.

행을 가져온 후에도 언제든지 열을 바인딩할 수 있습니다. 그러나 새 바인딩은 다음에 행을 가져올 때까지 적용되지 않습니다. 이미 가져온 행의 데이터에는 적용되지 않습니다.

변수는 다른 변수가 열에 바인딩될 때까지, null 포인터를 가진 SQLBindCol을 변수의 주소로 호출하여 열에 바인딩되지 않을 때까지, SQL_UNBIND 옵션을 사용하여 SQLFreeStmt를 호출하여 모든 열이 바인딩되지 않을 때까지 또는 문이 해제될 때까지 열에기본 다시 바인딩됩니다. 이러한 이유로 애플리케이션은 바인딩된 변수가 있는 한 모든 바인딩된 변수가 다시 유효하지 기본 확인해야 합니다. 자세한 내용은 버퍼 할당 및 해제를 참조 하세요.

열 바인딩은 문 구조와 연결된 정보일 뿐이므로 순서에 따라 설정할 수 있습니다. 또한 결과 집합과 독립적입니다. 예를 들어 애플리케이션이 다음 SQL 문에 의해 생성된 결과 집합의 열을 바인딩한다고 가정합니다.

SELECT * FROM Orders  

애플리케이션이 SQL 문을 실행하는 경우

SELECT * FROM Lines  

동일한 문 핸들에서 첫 번째 결과 집합에 대한 열 바인딩은 문 구조에 저장된 바인딩이므로 계속 적용됩니다. 대부분의 경우 이는 잘못된 프로그래밍 방식이므로 피해야 합니다. 대신 애플리케이션은 SQL_UNBIND 옵션을 사용하여 SQLFreeStmt를 호출하여 모든 이전 열을 바인딩한 다음 새 열을 바인딩해야 합니다.