SQLGetConnectAttr 함수
규칙
도입된 버전: ODBC 3.0 표준 준수: ISO 92
요약
SQLGetConnectAttr 는 연결 특성의 현재 설정을 반환합니다.
참고 항목
ODBC 3*.x* 애플리케이션이 ODBC 2*.x* 드라이버로 작업할 때 드라이버 관리자가 이 함수를 매핑하는 내용에 대한 자세한 내용은 애플리케이션의 이전 버전과의 호환성을 위한 대체 함수 매핑을 참조 하세요.
구문
SQLRETURN SQLGetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
인수
ConnectionHandle
[Input] 연결 핸들입니다.
특성
[입력] 검색할 특성입니다.
ValuePtr
[출력] 특성으로 지정된 특성의 현재 값을 반환할 메모리에 대한 포인터입니다. 정수 형식 특성의 경우 일부 드라이버는 버퍼의 하위 32비트 또는 16비트만 쓰고 상위 순서 비트는 변경되지 않은 상태로 둘 수 있습니다. 따라서 애플리케이션은 SQLULEN 버퍼를 사용하고 이 함수를 호출하기 전에 값을 0으로 초기화해야 합니다.
ValuePtr이 NULL인 경우 StringLengthPtr은 ValuePtr가 가리키는 버퍼에서 반환할 수 있는 총 바이트 수(문자 데이터의 null 종료 문자 제외)를 계속 반환합니다.
BufferLength
[입력] 특성이 ODBC 정의 특성이고 ValuePtr가 문자열 또는 이진 버퍼를 가리키는 경우 이 인수는 *ValuePtr 길이여야 합니다. 특성이 ODBC 정의 특성이고 *ValuePtr이 정수인 경우 BufferLength는 무시됩니다. *ValuePtr의 값이 유니코드 문자열인 경우(SQLGetConnectAttrW를 호출할 때) BufferLength 인수는 짝수여야 합니다.
특성이 드라이버 정의 특성인 경우 애플리케이션은 BufferLength 인수를 설정하여 드라이버 관리자에 대한 특성의 특성을 나타냅니다. BufferLength 는 다음 값을 가질 수 있습니다.
*ValuePtr이 문자열에 대한 포인터인 경우 BufferLength는 문자열의 길이입니다.
*ValuePtr이 이진 버퍼에 대한 포인터인 경우 애플리케이션은 bufferLength에 SQL_LEN_BINARY_ATTR(길이) 매크로의 결과를 배치합니다. 그러면 BufferLength에 음수 값이 배치됩니다.
*ValuePtr이 문자열이나 이진 문자열이 아닌 값에 대한 포인터인 경우 BufferLength에는 SQL_IS_POINTER 값이 있어야 합니다.
*ValuePtr에 고정 길이 데이터 형식이 포함된 경우 BufferLength는 적절하게 SQL_IS_INTEGER 또는 SQL_IS_UINTEGER.
StringLengthPtr
[출력] *ValuePtr에서 반환할 수 있는 총 바이트 수(null 종료 문자 제외)를 반환할 버퍼에 대한 포인터입니다. 특성 값이 문자열이고 반환할 수 있는 바이트 수가 BufferLength에서 null 종료 문자의 길이를 뺀 값보다 큰 경우 *ValuePtr의 데이터는 BufferLength에서 null 종료 문자의 길이를 뺀 값으로 잘리며 드라이버에서 null로 종료됩니다.
반품
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR 또는 SQL_INVALID_HANDLE.
진단
SQLGetConnectAttr가 SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 SQL_HANDLE_DBC HandleType 및 ConnectionHandle 핸들을 사용하여 SQLGetDiagRec 를 호출하여 진단 데이터 구조에서 연결된 SQLSTATE 값을 가져올 수 있습니다. 다음 표에서는 일반적으로 SQLGetConnectAttr에서 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. 표기법 "(DM)"은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 나와 있습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.
SQLSTATE | Error | 설명 |
---|---|---|
01000 | 일반 경고 | 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
01004 | 문자열 데이터, 오른쪽 잘림 | *ValuePtr 에서 반환된 데이터는 Null 종료 문자의 길이를 뺀 BufferLength 로 잘렸습니다. 신뢰할 수 없는 문자열 값의 길이는 *StringLengthPtr에서 반환됩니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다. |
08003 | 연결이 열리지 않음 | (DM) 열린 연결이 필요한 특성 값이 지정되었습니다. |
08S01 | 통신 링크 실패 | 드라이버와 드라이버가 연결된 데이터 원본 간의 통신 링크는 함수가 처리를 완료하기 전에 실패했습니다. |
HY000 | 일반 오류 | 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. SQLGetDiagField의 MessageText 인수에 의해 진단 데이터 구조에서 반환된 오류 메시지는 오류와 그 원인을 설명합니다. |
HY001 | 메모리 할당 오류 | 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다. |
HY010 | 함수 시퀀스 오류 | (DM) CONNECTIONHandle에 대해 SQLBrowseConnect가 호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 SQLBrowseConnect가 SQL_SUCCESS_WITH_INFO 또는 SQL_SUCCESS 반환하기 전에 호출되었습니다. (DM) SQLExecute, SQLExecDirect 또는 SQLMoreResults가 ConnectionHandle에 대해 호출되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다. |
HY013 | 메모리 관리 오류 | 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다. |
HY090 | 잘못된 문자열 또는 버퍼 길이 | (DM) *ValuePtr 는 문자열이고 BufferLength는 0보다 작지만 SQL_NTS 같지 않았습니다. |
HY092 | 잘못된 특성/옵션 식별자 | 인수 특성 에 지정된 값이 드라이버에서 지원하는 ODBC 버전에 대해 유효하지 않습니다. |
HY114 | 드라이버는 연결 수준 비동기 함수 실행을 지원하지 않습니다. | (DM) 애플리케이션이 비동기 연결 작업을 지원하지 않는 드라이버에 대해 SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE 사용하여 비동기 함수 실행을 사용하도록 설정하려고 했습니다. |
HY117 | 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. | (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수를 참조 하세요. |
HYC00 | 선택적 기능이 구현되지 않음 | 인수 특성 에 지정된 값은 드라이버에서 지원하는 ODBC 버전의 유효한 ODBC 연결 특성이지만 드라이버에서 지원되지 않았습니다. |
HYT01 | 연결 제한 시간이 만료됨 | 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQL_ATTR_CONNECTION_TIMEOUT SQLSetConnectAttr를 통해 설정됩니다. |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | (DM) ConnectionHandle에 해당하는 드라이버는 함수를 지원하지 않습니다. |
주석
연결 특성에 대한 일반적인 내용은 연결 특성을 참조 하세요.
설정할 수 있는 특성 목록은 SQLSetConnectAttr를 참조하세요. 특성이 문자열을 반환하는 특성을 지정하는 경우 ValuePtr은 문자열의 버퍼에 대한 포인터여야 합니다. null 종료 문자를 포함하여 반환된 문자열의 최대 길이는 BufferLength 바이트입니다.
특성에 따라 애플리케이션은 SQLGetConnectAttr를 호출하기 전에 연결을 설정할 필요가 없습니다. 그러나 SQLGetConnectAttr가 호출되고 지정된 특성에 기본값이 없으며 SQLSetConnectAttr에 대한 이전 호출로 설정되지 않은 경우 SQLGetConnectAttr는 SQL_NO_DATA 반환합니다.
특성이 TRACE 또는 SQL_ATTR_ TRACEFILE을 SQL_ATTR_ 경우 ConnectionHandle은 유효하지 않아도 되며 ConnectionHandle이 잘못된 경우 SQLGetConnectAttr는 SQL_ERROR 또는 SQL_INVALID_HANDLE 반환하지 않습니다. 이러한 특성은 모든 연결에 적용됩니다. 다른 인수가 잘못된 경우 SQLGetConnectAttr 는 SQL_ERROR 반환하거나 SQL_INVALID_HANDLE.
애플리케이션은 SQLSetConnectAttr를 사용하여 문 특성을 설정할 수 있지만, 애플리케이션은 SQLGetConnectAttr를 사용하여 문 특성 값을 검색할 수 없습니다. 문 특성 설정을 검색하려면 SQLGetStmtAttr을 호출해야 합니다.
SQL_ATTR_AUTO_IPD 및 SQL_ATTR_CONNECTION_DEAD 연결 특성은 모두 SQLGetConnectAttr 호출로 반환할 수 있지만 SQLSetConnectAttr 호출로 설정할 수는 없습니다.
참고 항목
SQLGetConnectAttr에 대한 비동기 지원은 없습니다. SQLGetConnectAttr를 구현할 때 드라이버는 서버에서 정보를 보내거나 요청한 횟수를 최소화하여 성능을 향상시킬 수 있습니다.
관련 함수
추가 정보 | 참조 |
---|---|
문 특성의 설정 반환 | SQLGetStmtAttr 함수 |
연결 특성 설정 | SQLSetConnectAttr 함수 |
환경 특성 설정 | SQLSetEnvAttr 함수 |
문 특성 설정 | SQLSetStmtAttr 함수 |