콘텐츠로 이동

SQLGetConnectAttr

SQLGetConnectAttr#

특정 연결에 대해 설정된 속성값을 가져온다.

Unicode SQLGetConnectAttrW() 동작은 SQLGetConnectAttr()와 동일하다.

구 문#

SQLRETURN SQLGetConnectAttr (
       SQLHDBC          dbc,
       SQLINTEGER       Attribute,
       SQLPOINTER       ValuePtr,
       SQLINTEGER       BufferLength,
       SQLINTEGER       *StringLengthPtr ); 

인 자#

자료유형 인자 사용 설명
SQLHDBC dbc 입력 연결 핸들
SQLINTEGER Attribute 입력 검색할 속성
SQLPOINTER ValuePtr 출력 속성에 해당하는 값을 가져올 메모리 포인터
SQLINTEGER BufferLength 입력 - *ValuePtr이 character string 의 포인터이면 string 의 바이트 길이 또는 SQL_NTS
- *ValuePtr이 binary buffer 의 포인터이면 바이너리 데이터의 길이
- *ValuePtr이 integer 같은 fixed-length 데이터 타입의 포인터이면 이 값은 무시된다.
SQLINTEGER StringLengthPtr 출력 *ValuePtr에 반환되는 값의 바이트 길이(null-termination character 제외)를 반환

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

Attribute가 string을 반환하는 속성인 경우 ValuePtr은 string 버퍼를 가리키는 포인터이다. null-termination 문자를 포함해서 반환되는 string의 최대 길이는 BufferLength 바이트가 될것이다. 속성에 따라서 애플리케이션은 SQLGetConnectAttr()을 호출하기 전에 연결을 구축할 필요가 없다.

연결 속성#

Attribute 내용
SQL_ATTR_AUTOCOMMIT 연결에 대한 반영 작동을 설정하는 32비트 값.
- SQL_AUTOCOMMIT_ON: 각각의 SQL문은 실행 시 자동으로 반영.
- SQL_AUTOCOMMIT_OFF: 각 SQL문을 실행 시 자동으로 반영하지 않는다.
SQL_ATTR_CONNECTION_TIMEOUT 네트워크 불안정 시 select() 또는 poll() 에서 발생할 수 있는 blocking을 방지하기 위한 timeout 값 설정
SQL_ATTR_PORT Server port 설정 (32-bit Integer)
SQL_ATTR_TXN_ISOLATION dbc에 의해 참조되는 현재 연결에 대한 트랜잭션 분리 레벨을 설정하는 32 비트값.
SQL_ATTR_LOGIN_TIMEOUT 애플리케이션에 반환하기 전에 로그인이 되기를 기다리는 시간(초)에 대응하는 SQLINTEGER 값.
기본값은 드라이버에 따라 다르다.
ValuePtr이 0이면 타임아웃은 disable 하고 연결 시도를 무한히 기다린다.
SQL_ATTR_CONNECTION_DEAD - SQL_CD_TRUE: 연결이 끊긴 상태
- SQL_CD_FALSE: 연결된 상태
ALTIBASE_SOCK_RCVBUF_BLOCK_RATIO 소켓 수신 버퍼로 설정된 메모리 크기의 32K 단위 비율

진 단#

SQLSTATE 설명 부연설명
08S01 통신 회선 장애 (데이터 송수신 실패) Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패
HYC00 지원하지 않는 속성 사용 인자 Attribute에 명시된 값이 드라이버가 지원 안 하는 값 임.

관련 함수#

SQLSetConnectAttr

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_dead.cpp 참고 >

rc = SQLGetConnectAttr( dbc, SQL_ATTR_CONNECTION_DEAD, &isDead, 0, NULL );
…

if ( rc == SQL_SUCCESS )
    {
        if ( isDead == SQL_CD_TRUE )
        {
            printf("The Connection has been lost.\n");
        }
        else
        {
            printf("The Connection is active.\n");
        } 
    }