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");
}
}