Altibase Starting User's Manual
|
|
- 다현 경
- 6 years ago
- Views:
Transcription
1 ALTIBASE HDB Application Development Altibase C Interface Manual Release (April 16, 2015)
2 Altibase Application Development ACI Manual Release Copyright c 2001~2015 Altibase Corp. All Rights Reserved. 본문서의저작권은 알티베이스에있습니다. 이문서에대하여당사의동의없이무단으로복제또는전용할수없습니다. 알티베이스 서울시구로구구로동 대륭포스트타워 Ⅱ 10 층전화 : 팩스 : 고객서비스포털 : homepage:
3 목차 서문... 7 이매뉴얼에대하여 Altibase C 인터페이스소개 Altibase C 인터페이스란? ACI 사용방법 클라이언트응용프로그램빌드 데이터타입 ACI 자료구조 ACI 함수 altibase_affected_rows() altibase_client_version() altibase_client_verstr() altibase_close() altibase_commit() altibase_connect() altibase_data_seek() altibase_errno() altibase_error() altibase_fetch_lengths() altibase_fetch_row() altibase_field() altibase_field_count() altibase_free_result() altibase_get_charset() altibase_get_charset_info() altibase_host_info() altibase_init() 목차 3
4 altibase_list_fields() altibase_list_tables() altibase_next_result() altibase_num_fields() altibase_num_rows() altibase_proto_version() altibase_proto_verstr() altibase_query() altibase_rollback() altibase_server_version() altibase_server_verstr() altibase_set_charset() altibase_set_autocommit() altibase_set_failover_callback() altibase_set_option() altibase_sqlstate() altibase_store_result() altibase_use_result() Prepared Statement 관련 ACI 함수 altibase_stmt_affected_rows() altibase_stmt_bind_param() altibase_stmt_bind_result() altibase_stmt_close() altibase_stmt_data_seek() altibase_stmt_errno() altibase_stmt_error() altibase_stmt_execute() altibase_stmt_fetch() altibase_stmt_fetch_column() altibase_stmt_fetched() altibase_stmt_field_count() altibase_stmt_free_result() altibase_stmt_get_attr() altibase_stmt_init() Altibase C Interface Manual
5 altibase_stmt_num_rows() altibase_stmt_param_count() altibase_stmt_prepare() altibase_stmt_processed() altibase_stmt_reset() altibase_stmt_result_metadata() altibase_stmt_send_long_data() altibase_stmt_set_array_bind() altibase_stmt_set_array_fetch() altibase_stmt_set_attr() altibase_stmt_sqlstate() altibase_stmt_status() altibase_stmt_store_result() Array Binding과 Array Fetch 개요 Array Binding Array Fetch Fail-Over 개요 사용법 찾아보기 목차 5
6
7 서문 서문 7
8 이매뉴얼에대하여 이매뉴얼은 Altibase C API 의사용법에대해설명한다. 대상사용자 이매뉴얼은다음과같은 ALTIBASE HDB 사용자를대상으로작성되었다. 데이터베이스관리자 성능관리자 데이터베이스사용자 응용프로그램개발자 기술지원부다음과같은배경지식을가지고이매뉴얼을읽는것이좋다. 컴퓨터, 운영체제및운영체제유틸리티운용에필요한기본지식 관계형데이터베이스사용경험또는데이터베이스개념에대한이해 컴퓨터프로그래밍경험 데이터베이스서버관리, 운영체제관리또는네트워크관리경험 소프트웨어환경 이매뉴얼은데이터베이스서버로 ALTIBASE HDB 버전 을 사용한다는가정하에작성되었다. 이매뉴얼의구성 이매뉴얼은다음과같이구성되어있다. 제 1 장 Altibase C 인터페이스소개이장은 Altibase C 인터페이스가무엇인지소개하고기본적인사용법에대해서설명한다. 제 2 장데이터타입이장은 Altibase C 인터페이스와함께사용되는데이터타입에 8 Altibase C Interface Manual
9 대해서설명한다. 제 3 장함수이장은 Altibase C 인터페이스함수의명세를기술한다. 제 4 장 Prepared Statement 관련함수이장은 Prepared Statement 와관련된 Altibase C 인터페이스함수의명세를기술한다. 제 5 장 Array Binding 과 Array Fetch 이장은여러건의데이터를한꺼번에처리하는방법인 array binding 과 array fetch 에대해서설명한다. 제 6 장 Fail-Over 이장은 Altibase C 인터페이스를사용해서 Failover 관련작업을수행하는방법을설명한다. 문서화규칙 이절에서는이매뉴얼에서사용하는규칙에대해설명한다. 이규칙을이해하면이매뉴얼과설명서세트의다른매뉴얼에서정보를쉽게찾을수있다. 여기서설명하는규칙은다음과같다. 구문다이어그램 샘플코드규칙 구문다이어그램 이매뉴얼에서는다음구성요소로구축된다이어그램을사용하여, 명령문의구문을설명한다. 구성요소 예약어 의미명령문이시작한다. 완전한명령문이아닌구문요소는화살표로시작한다. 명령문이다음라인에계속된다. 완전한명령문이아닌구문요소는이기호로종료한다. 명령문이이전라인으로부터계속된다. 완전한명령문이아닌구문요소는이기호로시작한다. ; 명령문이종료한다. SELECT 필수항목 서문 9
10 선택적항목 NOT ADD 선택사항이있는필수항목. 한항목만제공해야한다. DROP 선택사항이있는선택적항목 ASC DESC ASC 선택적항목. 여러항목이허용된다. 각반복앞부분에 콤마가와야한다. DESC, 샘플코드규칙 코드예제는 SQL, Stored Procedure, isql 또는다른명령라인 구문들을예를들어설명한다. 아래테이블은코드예제에서사용된인쇄규칙에대해설명한다. 규칙 의미 예제 [ ] 선택항목을표시 VARCHAR [(size)] [[FIXED ] VARIABLE] { } 필수항목표시. 반드시하나이상을선택해야되는표시 { ENABLE DISABLE COMPILE } 선택또는필수항목표시의인자구분표시. 그이전인자의반복표시. 예제코드들의생략되는것을. 표시 { ENABLE DISABLE COMPILE } [ ENABLE DISABLE COMPILE ] SQL> SELECT ename FROM employee; ENAME SWNO HJNO HSCHOI Altibase C Interface Manual
11 그밖에기호기울임꼴소문자대문자 위에서보여진기호이외에기호들구문요소에서사용자가지정해야하는변수, 특수한값을제공해야만하는위치지정자사용자가제공하는프로그램의요소들, 예를들어테이블이름, 칼럼이름, 파일이름등시스템에서제공하는요소들또는구문에나타나는키워드 20 rows selected. EXEC :p1 := 1; acc NUMBER(11,2); SELECT * FROM table_name; CONNECT userid/password; SELECT ename FROM employee; DESC SYSTEM_.SYS_INDICES_; 관련자료 자세한정보를위하여다음문서목록을참조하기바란다. Installation Guide Administrator s Manual Replication Manual Precompiler User s Manual CLI User's Manual isql User s Manual Utilities Manual Error Message Reference 온라인매뉴얼 Altibase 고객서비스포털 ( 에서국문및 영문매뉴얼 (PDF, HTML) 을받을수있다. Altibase 는여러분의의견을환영합니다. 이매뉴얼에대한여러분의의견을보내주시기바랍니다. 사용자의의견은다음버전의매뉴얼을작성하는데많은도움이됩니다. 보내실때에는아래내용과함께고객서비스포털 ( 로보내주시기바랍니다. 서문 11
12 사용중인매뉴얼의이름과버전 매뉴얼에대한의견 사용자의성함, 주소, 전화번호이외에도 Altibase 기술지원설명서의오류와누락된부분및기타기술적인문제들에대해서이주소로보내주시면정성껏처리하겠습니다. 또한, 기술적인부분과관련하여즉각적인도움이필요한경우에도고객서비스포털을통해서비스를요청하시기바랍니다. 여러분의의견에항상감사드립니다. 12 Altibase C Interface Manual
13 1. Altibase C 인터페이스 소개 이장은 Altibase C 인터페이스가무엇인지소개하고기본적인 사용법에대해서설명한다. Altibase C 인터페이스소개 13
14 Altibase C 인터페이스란? Altibase C 인터페이스 (Altibase C Interface, 앞으로 ACI 라칭함 ) 는클라이언트응용프로그램에서 ALTIBASE HDB 에접근하기위해사용할수있는 C 함수이다. C 언어로클라이언트응용프로그램작성시 ACI 를이용할수있다. ACI 를이용해서 ALTIBASE HDB 에연결, 데이터를조회또는조작할수있다.. ACI vs. CLI Altibase CLI 는 ODBC 표준인터페이스인반면, ACI 는 ALTIBASE HDB 전용인터페이스이다. ACI 를사용하면 ODBC 보다적은수의 함수호출로도동일한 SQL 문을수행할수있다. 14 Altibase C Interface Manual
15 ACI 사용방법 이절은 ACI 를이용한응용프로그램작성에필요한사전지식을 제공한다. 기본사용법 ACI 응용프로그램은일반적으로다음의 3 단계로구성된다. 초기설정 트랜잭션처리 종료위단계에더해서, 오류발생시에는진단메시지를확인하는단계가추가될수있다 altibase_init() altibase_connect() Initializing Handles altibase_stmt_init() Transaction Processing altibase_stmt_close() altibase_close() Releasing Handles 초기설정 이단계에서는연결핸들및명령문핸들을할당하고초기화한다. 핸들은이전단계의실행결과에관한정보를저장하고있는메모리포인터이며, 한단계에서다음단계로의전이는적절한핸들을전달함으로써이루어진다. ACI 응용프로그램작성을위해제공되는핸들의종류는다음과같다. ALTIBASE 핸들 ALTIBASE 핸들은 ACI 가관리하는연결과관련된정보를저장하는 메모리포인터이다. 이정보에는연결상태와트랜잭션의상태가 Altibase C 인터페이스소개 15
16 포함된다. 응용프로그램에서는각연결별로 ALTIBASE 핸들을생성하고초기화해야하며, 이핸들을이용해서 ALTIBASE HDB 로연결을시도할수있다. 또한, 이핸들을사용해서 ALTIBASE HDB 에대해 SQL 문을수행할수도있다. ALTIBASE_STMT 핸들 Prepare-Execution 방식으로 SQL 문을수행하려면 ALTIBASE_STMT 핸들을사용해야한다. 하나의연결핸들에대해 최대 1024 개의 ALTIBASE_STMT 핸들이할당될수있다. 트랜잭션처리 다음의도식은트랜잭션을처리하기위해서함수가호출되는 일반적인절차를보여준다. Prepare a statement altibase_stmt_prepare() altibase_stmt_bind_param() Execute a statement directly altibase_query() Execute a statement altibase_stmt_execute() Get entire ResultSets (Option) altibase_stmt_store_result() Get ResultSet Handles altibase_use_result() altibase_store_result() Fetch each row from a ResultSet (Using SELECT) altibase_stmt_field_count() altibase_stmt_bind_result() altibase_stmt_fetch() Fetch each row from a ResultSet (Using SELECT) altibase_field_count() altibase_fetch_lengths() altibase_fetch_row() Release a ResultSet handle altibase_stmt_free_result() Release a ResultSet handle altibase_free_result() 종료 이단계에서는핸들과핸들이참조하는정보가저장된메모리를 해제하며, 응용프로그램을종료한다. 16 Altibase C Interface Manual
17 진단 진단이란응용프로그램내에서 ACI 함수호출시발생한오류나경고상태를확인하는것을말한다. ACI 함수호출의반환값을검사해서함수가성공적으로수행되었는지여부를확인할수있다. 함수별반환값은 3 장의각함수에대한설명을참고하라. 함수가성공적으로수행되지못한경우, 진단메시지가생성된다. 진단메시지를확인하기위해서, 다음의함수를사용할수있다. 함수호출시사용된핸들의종류에따라서사용할수있는진단함수가달라진다. 핸들타입 ALTIBASE ALTIBASE_STMT 설명함수 altibase_errno() altibase_stmt_errno() 에러코드조회 altibase_error() altibase_stmt_error() 에러메시지조회 altibase_sqlstate() altibase_stmt_sqlstate( ) SQLSTATE 코드조회 함수반환값이 ALTIBASE_SUCCESS, ALTIBASE_NO_DATA_FOUND 및 ALTIBASE_INVALID_HANDLE 이아닌경우에만진단메시지를조회할수있다. 진단메시지 진단메시지중 SQLSTATE 코드는 5 개의알파벳과숫자로이루어진문자열이다. 첫두문자는클래스를가리키며, 뒤의세문자는하위클래스를가리킨다. ACI 진단메시지는 X/Open SQL CAE 명세를준수한다. 주의사항 멀티쓰레드프로그램을작성할때, 쓰레드별로환경핸들, 연결핸들을각각할당해야한다. ALTIBASE HDB 클라이언트라이브러리는신호처리를하지않는다. 따라서외부원인에의해네트워크접속이종료된경우, SIGPIPE 신호를받아진행중인응용프로그램이강제로종료될수있다. 이러한강제종료를막기위해서는 SIGPIPE 신호를사용자응용프로그램에서처리해야한다. SIGPIPE 신호처리를처리하는함수내에서 ALTIBASE HDB 클라이언트라이브러리함수를호출하면프로그램이멈출수도있으므로, 신호처리함수작성에 Altibase C 인터페이스소개 17
18 주의해야한다. 하지만신호처리가끝난후에는 ALTIBASE HDB 클라이언트라이브러리함수를호출하는것이가능하다. 18 Altibase C Interface Manual
19 클라이언트응용프로그램빌드 이절은클라이언트응용프로그램을빌드하는데필요한헤더 파일과라이브러리파일에대해기술한다. 헤더파일 응용프로그램작성시에포함되고, 컴파일시에참조되는헤더파일은 alticapi.h 로, 이는 $ALTIBASE_HOME/include 디렉토리에존재한다. 컴파일시에는컴파일명령어에다음의옵션을사용하라 : -I$ALTIBASE_HOME/include 라이브러리파일 응용프로그램을빌드하려면, 컴파일된오브젝트파일을 ALTIBASE HDB 가제공하는 ACI 라이브러리및 ODBC 라이브러리와함께링크해야한다. 이들라이브러리는아래의파일들이며, $ALTIBASE_HOME/lib 디렉토리에존재한다. libalticapi.a libodbccli.a 링크시에는링크명령어에다음의옵션을사용하라 : -L$ALTIBASE_HOME/lib -lalticapi -lodbccli Altibase C 인터페이스소개 19
20
21 2. 데이터타입 이장은 Altibase C 인터페이스와함께사용되는데이터타입에 대해서설명한다. 데이터타입 21
22 ACI 자료구조 이절은 Altibase C 인터페이스의자료구조들을기술한다. 이자료구조들은응용프로그램작성시 ACI 함수들과함께사용될것이다. 자료구조들은크게다음과같이분류된다. 핸들타입 구조체타입 그외데이터타입 핸들 ACI 핸들에는다음의세개가있다. ALTIBASE ALTIBASE_STMT ALTIBASE_RES ALTIBASE ALTIBASE 는데이터베이스에대한연결핸들이다. 연결핸들은대부분의 ACI 함수에사용된다. 반드시 altibase_init() 을이용해서이핸들을초기화하고, altibase_close() 를이용해서이핸들을해제해야한다. 연결핸들은하나의결과집합핸들 (ALTIBASE_RES) 만을반환하고관리한다. 즉, 하나의결과집합을사용하다가다른결과집합의핸들을얻으려면, 먼저사용중인결과집합핸들을해제해야한다. ALTIBASE_STMT ALTIBASE_STMT 는명령문핸들이다. Prepare-execution 방식으로 SQL 문을수행하려면, 이핸들을사용해야한다. 또한, SQL 문에파라미터마크가포함되어있거나 SELECT 문의결과를변수바인딩을통해가져오려면반드시준비된문장 (prepared statement) 을사용해야한다. 반드시 altibase_stmt_init() 을이용해서이핸들을초기화하고, altibase_stmt_close() 를이용해서이핸들을해제해야한다. ALTIBASE_RES 22 Altibase C Interface Manual
23 ALTIBASE_RES 는질의결과집합에대한핸들이다. 이핸들을이용해서질의결과집합과칼럼의정보를얻을수있다. 이핸들은 altibase_use_result() 또는 altibase_store_result() 함수를통해얻을수있으며, 핸들사용후에는반드시 altibase_free_result() 를사용해서해제해야한다. 구조체타입 ACI 와함께사용가능한데이터구조체는다음과같다. struct ALTIBASE_BIND struct ALTIBASE_CHARSET_INFO struct ALTIBASE_FIELD struct ALTIBASE_NUMERIC struct ALTIBASE_TIMESTAMP struct ALTIBASE_BIND 이구조체는입출력변수바인딩시사용되며, 사용자는바인딩 정보를여기에지정한다. altibase_stmt_bind_param() 는입력 파라미터를위한버퍼를바인딩하는함수이고, altibase_stmt_bind_result() 는조회된결과집합의칼럼데이터를 가져올버퍼를바인딩하는함수이다. 이구조체는다음과같은멤버를포함한다. 구조체멤버 타입 설명 buffer_type ALTIBASE_BIND_TY PE 바인딩할 buffer의타입을지정하는데사용되는멤버변수이다. "enum ALTIBASE_BIND_TYPE" 를참고하라. buffer void * 입출력데이터를담는버퍼를가리키는포인터이다. buffer_leng th ALTIBASE_LONG 입력바인딩의경우, buffer는 SQL문에물음표 (?) 로표시된파라미터에바인딩될변수일것이다. 출력바인딩의경우, buffer는조회된결과집합의각칼럼값을저장할변수일것이다. buffer의실제크기를지정하는데사용되는멤버변수이다. 길이가고정된데이터타입의변수로바인딩할때는이멤버의값을설정하지않아도된다. 그러나설정을생략하려면반드시이값이 0 으로초기화되어있어야한다. 다음타입에대해서만길이설정을생략할수있다 : 데이터타입 23
24 ALTIBASE_BIND_SMALLINT, ALTIBASE_BIND_INTEGER, ALTIBASE_BIND_BIGINT, ALTIBASE_BIND_REAL, ALTIBASE_BIND_DOUBLE, ALTIBASE_BIND_DATE 그러나, ALTIBASE_BIND_STRING과 같이 길이가 정해져있지않은데이터타입의변수로바인딩할 때는 반드시 buffer_length를 올바른 값으로 설정해야한다. 출력 변수 바인딩시, 만약 buffer_length에 설정된크기보다가져온데이터의길이가더길다면 buffer_length에설정된길이만큼만 buffer에 저장될 것이다. 예를 들어 int 값을 얻을 때 buffer_length에 4 대신 2 를주면, int 값의처음 2 바이트만 buffer에 복사된다. 올바른 값을 얻으려면 반드시 buffer_length를 바르게 설정해야한다. length ALTIBASE_LONG * 데이터의실제길이를지정하는데사용되는멤버변수이다. short, int 처럼데이터길이가고정되어있는경우에는이변수값을설정하지않아도된다. 문자열이나바이너리데이터를입력바인딩할경우, 데이터의길이가버퍼의크기보다작을수있으므로이변수에데이터의실제길이를설정해야한다. 출력바인딩으로사용되었을때, 이변수의값이 ALTIBASE_NULL_DATA로반환되면, 이는조회된칼럼의데이터가 NULL임을나타낸다. is_null ALTIBASE_BOOL * 출력바인딩으로사용되었을때, 조회된칼럼의 데이터가 NULL이면 여기에 ALTIBASE_TRUE가 반환된다. 칼럼데이터를사용하기전에먼저이 변수를이용해서해당데이터가 NULL인지여부를 확인할것을권장한다. error int 바인딩 수행 결과를 반환하는 멤버 변수이다. 바인딩에실패했을때, 이변수값을확인하면어떤 인자의바인딩에실패했는지알수있다. error 값은 altibase_errno() 로얻을수있는에러 번호중하나로반환된다. 이에대한자세한내용은 altibase_errno() 를참고한다. struct ALTIBASE_CHARSET_INFO 문자집합 (Character Set) 정보가담긴구조체이다. altibase_get_charset_info() 함수호출시이구조체로문자집합에대한정보가반환된다. 이구조체는다음과같은멤버를포함한다. 24 Altibase C Interface Manual
25 구조체멤버 타입 설명 id unsigned int 문자집합식별자 name void * 문자셋의이름 name_length int 문자집합이름의길이 mbmaxlen int 한문자를저장하기위해필요한최대크기 ( 바이트단위 ) struct ALTIBASE_FIELD SELECT 문으로조회되는결과집합의칼럼정보가담긴구조체이다. altibase_field() 또는 altibase_fields() 함수를이용해서칼럼정보를 이구조체타입으로구할수있다. 이렇게얻은구조체포인터가 가리키는메모리의값은 ACI 내부적으로관리되므로, 사용자가 임의로값을변경하거나해제해서는안된다. 이구조체는다음의멤버를포함한다. 구조체멤버 타입 설명 type ALTIBASE_FIELD_TYPE 칼럼의데이터타입 name char 칼럼의이름. [ALTIBASE_MAX_FIELD_ 질의에서 칼럼에 별칭 (alias) 를 준 NAME_LEN] 경우, 이값은주어진별칭이될 것이다. name_length int name의길이 org_name char 칼럼의이름 [ALTIBASE_MAX_FIELD_ NAME_LEN] org_name_leng th int org_name의길이 table char [ALTIBASE_MAX_TABLE _NAME_LEN] 이칼럼을포함하는테이블의이름. 질의에서테이블에별칭 (alias) 를준경우, 이값은주어진별칭이될것이다. table_length int table의길이 org_table char 테이블이름 [ALTIBASE_MAX_TABLE _NAME_LEN] org_table_len gth int org_table의길이 size int 칼럼 크기 또는 숫자형 타입의 precision scale int 숫자형타입의 scale 데이터타입 25
26 struct ALTIBASE_NUMERIC 숫자형데이터를저장하는구조체이다. NUMERIC 타입의데이터를 가져올때사용된다. 이구조체는다음의멤버를포함한다. 구조체멤버 precision scale sign val 타입 unsigned char unsigned char char unsigned char [ALTIBASE_MAX_NUMERIC_LEN] struct ALTIBASE_TIMESTAMP 날짜형데이터를저장하는구조체이다. DATE 타입의데이터를 가져올때사용된다. 이구조체는다음의멤버를포함한다. 구조체멤버 타입 설명 year short 년 month unsigned short 월 day unsigned short 일 hour unsigned short 시 minute unsigned short 분 second unsigned short 초 fraction int 1/ 초 그외타입 위에서설명한핸들과구조체외에다음의타입이사용될수있다. ALTIBASE_ROW ALTIBASE_LONG ALTIBASE_NTS enum ALTIBASE_BIND_TYPE enum ALTIBASE_FAILOVER_EVENT enum ALTIBASE_FIELD_TYPE enum ALTIBASE_OPTION 26 Altibase C Interface Manual
27 enum ALTIBASE_STMT_ATTR_TYPE ALTIBASE_ROW 이타입은질의결과의한행을타입안전방식으로표현 (type-safe representation) 한다. SELECT 와같이결과집합을반환하는질의를 altibase_query() 로실행한후, altibase_fetch_row() 를호출해서이타입의값을얻을수있다. 각칼럼의값은문자열또는바이너리데이터로구성된다. BLOB, BYTE, NIBBLE, BIT, VARBIT, GEOMETRY 타입의칼럼값은바이너리로표현되며, 그외의데이터타입값은문자열로표현된다. 특히, NIBBLE, BIT, VARBIT 타입은특별한형식을가진다. NIBBLE 은 4 비트, BIT 는 1 비트단위로값이이루어져있으므로, 이를사용자가인식하기쉬운값으로얻기위해서는 GET_NIBBLE_VALUE(), GET_BIT_VALUE() 와같은매크로를사용하면된다. 매크로정의는 alticapi.h 헤더파일을참조하라. 이타입의값 ( 내부적으로 char 포인터 ) 이가리키는메모리는내부에서관리되므로사용자가임의로변경하거나해제를시도해서는절대안된다. ALTIBASE_LONG 32 비트또는 64 비트정수형이다. ODBC 스펙에정의된 SQLLEN 타입과동일하다. 이타입은행번호나행의개수를 나타내는데사용된다. ALTIBASE_NTS 이는데이터가널로끝나는문자열임을나타내기위해사용되는매크로이다. 문자열을입력바인딩할때, 데이터길이를실제길이대신에이값으로설정할수있다. 바이너리데이터를입력바인딩할때는, 데이터길이를 ALTIBASE_NTS 로설정하면안된다. enum ALTIBASE_BIND_TYPE 바인딩할데이터의타입을지정할때사용된다. 이열거형의원소는다음과같다. 원소 설명 데이터타입 27
28 ALTIBASE_BIND_NULL NULL 데이터를칼럼에입력하고자할때 사용된다. ALTIBASE_BIND 구조체의 is_null 멤버변수를 ALTIBASE_TRUE로 설정한것과같다. 파라미터를바인딩할때만쓸수있다. ALTIBASE_BIND_BINARY 바이너리데이터. BYTE, NIBBLE, BIT, VARBIT, BLOB, GEOMETRY 타입에 데이터입력시사용된다. ALTIBASE_BIND_STRING 문자열. CHAR, VARCHAR, NCHAR, NVARCHAR 타입에 데이터 입력시 사용된다. ALTIBASE_BIND_WSTRING 유니코드문자열 ALTIBASE_BIND_SMALLINT 16 비트정수. SMALLINT 타입에데이터 입력시사용된다. ALTIBASE_BIND_INTEGER 32 비트정수. INTEGER 타입에데이터 입력시사용된다. ALTIBASE_BIND_BIGINT 64 비트정수. BIGINT 타입에데이터 입력시사용된다. ALTIBASE_BIND_REAL 실수. REAL 타입에 데이터 입력시 사용된다. ALTIBASE_BIND_DOUBLE 배정밀도실수. DOUBLE 타입에데이터 입력시사용된다. ALTIBASE_BIND_NUMERIC 숫자형 데이터. NUMERIC, DECIMAL, NUMBER, FLOAT 타입에데이터입력시 사용된다. ALTIBASE_BIND_DATE 날짜와시간. DATE 타입에데이터입력시 사용된다. enum ALTIBASE_FAILOVER_EVENT Failover 이벤트를나타내는열거형이다. Failover 콜백함수를 등록했다면, 등록된함수의 event 인자를통해서이열거형원소 중의한값이전달된다. 또한, 사용자는콜백함수에서이열거형값 중의하나를반환해서 Failover 의다음작업과정을계속진행할지 여부를지정할수있다. 이에대한자세한내용은 6 장. FailOver 를 참고한다. 이열거형의원소는다음과같다. 원소 설명 ALTIBASE_FO_BEGIN STF가시작됨을콜백함수에알리는값이다. ALTIBASE_FO_END STF가 성공하였음을 콜백 함수에 알리는 값이다. 28 Altibase C Interface Manual
29 ALTIBASE_FO_ABORT STF가 실패하였음을 콜백 함수에 알리는 값이다. ALTIBASE_FO_GO 사용자가콜백함수에서라이브러리로 STF의 다음 과정을 진행하라는 의미로 반환하는 값이다. ALTIBASE_FO_QUIT 사용자가콜백함수에서라이브러리로 STF의 다음 과정을 진행하지 말라는 의미로 반환하는값이다. enum ALTIBASE_FIELD_TYPE 이는칼럼의데이터타입이포함된열거형이다. 숫자타입인지확인하기위해 IS_NUM_TYPE() 매크로를사용할수있다. 숫자타입에는 SMALLINT, INTEGER, BIGINT, REAL, DOUBLE, FLOAT, NUMERIC 이있다. 바이너리타입인지확인하기위해 IS_BIN_TYPE() 매크로을사용할수있다. 바이너리타입에는 BYTE, BLOB, NIBBLE, BIT, VARBIT, GEOMETRY 가있다. IS_NUM_TYPE() 과 IS_BIN_TYPE() 매크로의정의는 alticapi.h 헤더파일을참조하라. 이열거형의원소는다음과같다. 원소 ALTIBASE_TYPE_CHAR ALTIBASE_TYPE_VARCHAR ALTIBASE_TYPE_NCHAR ALTIBASE_TYPE_NVARCHAR ALTIBASE_TYPE_SMALLINT ALTIBASE_TYPE_INTEGER ALTIBASE_TYPE_BIGINT ALTIBASE_TYPE_REAL ALTIBASE_TYPE_DOUBLE ALTIBASE_TYPE_FLOAT ALTIBASE_TYPE_NUMERIC ALTIBASE_TYPE_DATE ALTIBASE_TYPE_BLOB ALTIBASE_TYPE_CLOB ALTIBASE_TYPE_BYTE ALTIBASE_TYPE_NIBBLE CHAR VARCHAR NCHAR NVARCHAR SMALLINT INTEGER BIGINT REAL DOUBLE FLOAT NUMERIC DATE BLOB CLOB BYTE NIBBLE 설명 데이터타입 29
30 ALTIBASE_TYPE_BIT ALTIBASE_TYPE_VARBIT ALTIBASE_TYPE_GEOMETRY BIT VARBIT GEOMETRY enum ALTIBASE_OPTION 서버와의연결속성을설정할때사용되는열거형이다. 이중 ALTIBASE_AUTOCOMMIT 속성은 altibase_set_autocommit() 함수를사용해서설정하기를권장한다. 이열거형의원소 ( 즉, 연결속성 ) 와각속성에지정할수있는값의 타입및최대크기는다음과같다. 원소 ( 연결속성 ) 속성값의 속성값의 설명 타입 최대크기 ALTIBASE_AUTOCOMMI int sizeof(int) AUTOCOMMIT 여부를 T 설정하는속성. 속성의 값은 32 비트 크기이다. 이 속성의 값은 ALTIBASE_AUTOCOMMIT_ ON 또는 ALTIBASE_AUTOCOMMIT_ OFF 로설정할수있다. ALTIBASE_CONNECTION int sizeof(int) 네트워크 불안정으로 인해 _TIMEOUT 데이터송수신시발생할수 있는블록킹을방지하기위한타임아웃값을설정하는속성 ALTIBASE_PORT int sizeof(int) ALTIBASE HDB 서버의포트번호를설정하는속성 ALTIBASE_TXN_ISOLATI int sizeof(int) 트랜잭션의 고립화 수준을 ON 설정하는속성 ALTIBASE_APP_INFO char * ALTIBASE_MAX_A 클라이언트 식별자를 PP_INFO_LEN 지정하는속성. 클라이언트에 대한 보다 정확한정보를설정하기위해사용된다. ALTIBASE_DATE_FORM char * ALTIBASE_MAX_D 날짜형식을지정하는속성. AT ATE_FORMAT_LEN 기본값은 "YYYY/MM/DD HH:MI:SS" 이다. ALTIBASE_NLS_USE char * ALTIBASE_MAX_NL 클라이언트 사용 언어를 S_USE_LEN 지정하는속성. (US7ASCII: 영어, 30 Altibase C Interface Manual
31 KO16KSC5601: 한국어 ) ALTIBASE_NLS_NCHAR_ int sizeof(int) SQL 구문에 NCHAR 리터럴 LITERAL_REPLACE 문자열이 존재하는지 검사 여부를설정하는속성. ALTIBASE_IPC_FILEPATH char * ALTIBASE_MAX_IP 유닉스 환경에서 서버와 C_FILEPATH_LEN 클라이언트가 IPC로 접속할 때 ALTIBASE_HOME이서로 다르다면, 유닉스 도메인의 소켓경로가일치하지않아 접속이불가능하다. 이때이 속성의 값을 서버의 $ALTIBASE_HOME/trc/cmipc 파일로설정하여서버와 클라이언트가 같은 소켓 파일을사용하도록하면, IPC 접속이가능해진다. enum ALTIBASE_STMT_ATTR_TYPE 명령문핸들에대한속성을설정하기위해사용되는열거형이다. 이열거형의원소는다음과같다. 원소 ( 명령문속성 ) ALTIBASE_STMT_ATTR_ ATOMIC_ARRAY 속성값의타입 속성값의최대크기 설명 int sizeof(int) Atomic Array Insert 사용여부를 설정하는속성이다. 일반적인 Array Insert의경우배열내의각 SQL문이 서버에서다른 statement로처리되는 것에비해, Atomic Array Insert는 배열에속한모든 SQL문들이서버에서 한개의 statement로처리된다. 이 속성은 ALTIBASE_ATOMIC_ARRAY_ON 또는 ALTIBASE_ATOMIC_ARRAY_OFF로 설정할 수 있다. 이 외의 값을 설정하면에러가발생한다. ALTIBASE_ATOMIC_ARRAY_ON을 설정하면 Atomic Array Insert 방식으로실행된다. 그러나 Atomic Array Insert가 기존의 Array Insert보다 빠른 성능을 발휘하기 위해서는 Array Size를지정해야한다. Atomic Array Insert 수행시에는 데이터타입 31
32 배열에속한모든 SQL문들이서버에서한개의 statement로처리되므로, altibase_stmt_status(), altibase_stmt_processed() 가반환하는결과값 ( 반환타입이배열이다 ) 의첫번째요소값만이유효하다. 데이터타입간의관계 아래의그림은 ACI 의각핸들과데이터타입들사이의관계를보여준다. start altibase_init() ALTIBASE altibase_use_result() altibase_store_result() altibase_list_fields() altibase_list_tables() altibase_stmt_init() ALTIBASE_STMT altibase_stmt_result_metadata() altibase_stmt_close() altibase_stmt_free_result() End ALTIBASE_RES altibase_free_result() altibase_field() altibase_fields() ALTIBASE_FIELD altibase_fetch_row() ALTIBASE_ROW 위관계도를보면 ALTIBASE_STMT 핸들을사용해서얻은 ALTIBASE_RES 로는 ALTIBASE_ROW 를얻을수없음을알수있다 ( 점선으로표시 ). ALTIBASE_ROW 는바인딩없이 SQL 문을직접수행 (direct execution) 하는 altibase_query() 관련함수를통해서만구할수있다. 이에대한자세한내용은각함수의설명을참고하라. 32 Altibase C Interface Manual
33 3. ACI 함수 이장은 Altibase C 인터페이스함수들중연결핸들인 ALTIBASE 핸들을사용하는함수들의명세를기술한다. 각 ACI 함수별로다음의정보가제공된다. 함수명 : 사용목적 구문 : 이함수의 C 언어프로토타입 인자 : 함수의각인자별자료유형, 입 / 출력, 부연설명 반환값 : 반환가능한이함수의리턴값 설명 : 함수사용방법및주의사항 관련함수 : 이함수와관련된함수리스트 예제 : 이함수가사용된소스코드의일부 ACI 함수 33
34 altibase_affected_rows() 바로이전에실행한 UPDATE, DELETE 또는 INSERT 문에의해 영향을받은레코드의수를구하는함수이다. 구문 ALTIBASE_LONG altibase_affected_rows ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 반환값 설명 0 보다큰값 SQL문에의해영향을받은레코드의개수 0 SQL문에의해영향을받은레코드가없음 ALTIBASE_INVALID_AFFECTEDROW UPDATE, DELETE, 또는 INSERT 수행중에러발생 설명 이함수는마지막으로수행한 SQL 문의종류에따라다음과같은값을반환한다 : UPDATE 문 : 변경된레코드수 DELETE 문 : 삭제된레코드수 INSERT 문 : 추가된레코드수만약마지막으로수행한 SQL 문이 SELECT 문이었다면이함수는 0 을반환할것이다. SELECT 문에의해선택된레코드의개수를얻고자할때는 altibase_num_rows() 를사용해야한다. 예제 34 Altibase C Interface Manual
35 #define QSTR "UPDATE employees SET salary = salary * 1.1 WHERE group = 1" rc = altibase_query(altibase, QSTR); /*... check return value... */ printf("%ld updated\n", altibase_affected_rows(altibase)); ACI 함수 35
36 altibase_client_version() 클라이언트라이브러리의버전을구하는함수이다. 구문 int altibase_client_version( void ); 반환값 클라이언트라이브러리버전을나타내는상수가반환된다. 설명 이함수는클라이언트라이브러리의버전을나타내는상수를 반환한다. 반환값의형식은 MMmmttSSpp 이며각각의의미는다음과 같다. 형식 설명 비고 MM 주버전 mm 부버전 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. tt 텀 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. SS 패치셋 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. pp 패치 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. 예를들어, 이함수의반환값이 이면클라이언트 라이브러리의버전은 이다. 36 Altibase C Interface Manual
37 altibase_client_verstr() 클라이언트라이브러리의버전을구하는함수이다. 구문 const char * altibase_client_verstr ( void ); 반환값 클라이언트라이브러리버전을나타내는문자열이반환된다. 설명 이함수는클라이언트라이브러리의버전을나타내는문자열을반환한다. 반환값의형식은 x.x.x.x.x 이며순서대로주버전, 부버전, 텀, 패치셋, 패치를의미한다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. ACI 함수 37
38 altibase_close() 서버와의연결을닫는함수이다. 구문 int altibase_close ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는서버와의연결을종료하고, 연결핸들을위해할당된모든자원을해제한다. 이함수가호출되면인자로전달되는연결핸들에속한모든명령문핸들 (ALTIBASE_STMT) 에관련된 SQL 문처리가중단되고그결과들은폐기되며이들명령문핸들과관련된모든자원도해제된다. 연결핸들을사용해서반환받은결과집합핸들이있다면, 이함수를실행하기전에반드시 altibase_free_result() 함수를호출해서결과집합핸들을먼저해제해야한다. 예제 altibase = altibase_init(); if (altibase == NULL) { return 1; } 38 Altibase C Interface Manual
39 /*... omit... */ rc = altibase_close(altibase); /*... check return value... */ ACI 함수 39
40 altibase_commit() 이함수는현재트랜잭션을커밋한다. 구문 int altibase_commit ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는현재연결된세션에서수행중인트랜잭션을커밋한다. 해당세션이 AUTOCOMMIT 모드가아닌경우, 이함수수행후다음 SQL 문실행시에자동으로새로운트랜잭션이시작된다 예제 altibase_set_autocommit() 의예제를참고하라. 40 Altibase C Interface Manual
41 altibase_connect() 서버에접속하는함수이다. 구문 int altibase_connect ( ALTIBASE altibase, const char* connstr ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 const char* connstr 입력 연결속성문자열 반환값 함수수행에성공하면 ALTIBASE_SUCCESS 이, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는사용자가명시한연결속성을사용하여서버에연결한다. 연결속성에는 DSN, PORT_NO, UID, PWD, CONNTYPE, NLS_USE 등이있다. 이에대한자세한내용은 CLI User's Manual 를참고하기바란다. 연결속성문자열은반드시 NULL 종료문자열이어야한다. 예제 #define CONNSTR "DSN= ;PORT_NO=20300;UID=sys;PWD=manager" ALTIBASE altibase; altibase = altibase_init(); /*... check return value... */ ACI 함수 41
42 rc = altibase_set_option(altibase, ALTIBASE_APP_INFO, "your_app_name"); /*... check return value... */ rc = altibase_connect(altibase, CONNSTR); if (ALTIBASE_NOT_SUCCEEDED(rc)) { fprintf(stderr, "Failed to connect : %s\n", altibase_error(altibase)); } 42 Altibase C Interface Manual
43 altibase_data_seek() 질의결과집합에서가져올행의위치를지정하는함수이다. 구문 int altibase_data_seek ( ALTIBASE_RES result, ALTIBASE_LONG offset ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE_RES result 입력 결과집합핸들 ALTIBASE_LONG offset 입력 다음에가져올행의위치 (0 부터시작 ) 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는결과집합에서다음에가져올행의위치를특정위치로이동시킨다. 위치로지정하는행번호의값은 0 부터 ( 결과집합의행개수 1) 까지의값이어야한다. altibase_store_result() 호출이후에만이함수를실행할수있다. 예제 #define QSTR "SELECT last_name, first_name FROM friends" rc = altibase_qeury(altibase, QSTR); /*... check return value... */ result = altibase_store_result(altibase); /*... check return value... */ ACI 함수 43
44 row_count = altibase_num_rows(result); for (i = 0; i < row_count; i++) { rc = altibase_data_seek(result, i); if (ALTIBASE_NOT_SUCCEEDED(rc)) { printf("err : %d : ", i, altibase_error()); continue; } } /*... omit... */ rc = altibase_free_result(result); /*... check return value... */ 44 Altibase C Interface Manual
45 altibase_errno() 바로이전에실행된함수에서발생한오류의에러코드를구하는 함수이다. 구문 unsigned int altibase_errno ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 바로이전에호출된함수가성공했으면 0, 실패했으면에러코드가 반환된다. 설명 이함수는바로이전에실행된함수가실패했을경우, 실패원인을알려주는에러코드를반환한다. 바로이전에실행된함수가실패했더라도, 모든함수에대해서에러코드가반환되지는않는다. 직전에수행된함수가주로 SQL 문수행과관련된함수였을경우에만에러코드가생성된다. 에러코드에대한자세한내용은 Error Message Reference 를참고한다. 어떤함수수행시오류가발생한경우바로오류를확인하지않고다른함수를호출하면, 이오류에대한정보가사라진다. 따라서오류발생시바로이함수를사용해서오류정보를확인해야한다. altibase_errno() 가반환하는값은 ALTIBASE HDB 자체정의오류코드로 ODBC 표준명세에정의된 SQLSTATE 과는다르다. SQLSTATE 를얻으려면 altibase_sqlstate() 를사용해야한다. 일반적으로 altibase_errno() 의반환값을확인해서에러처리루틴을 ACI 함수 45
46 작성하는것을권장하지않는다. 예제 rc = altibase_query(altibase, QSTR); if (ALTIBASE_NOT_SUCCEEDED(rc)) { printf("error no : %05X\n", altibase_errno(altibase)); printf("error msg : %s\n", altibase_error(altibase)); printf("sqlstate : %s\n", altibase_sqlstate(altibase)); return 1; } /*... omit... */ 46 Altibase C Interface Manual
47 altibase_error() 바로이전에실행된함수에서발생한오류의에러메시지를구하는 함수이다. 구문 const char * altibase_error ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 바로이전에호출된함수가성공했으면빈문자열이, 실패했으면 에러메시지문자열이반환된다. 설명 이함수는바로이전에실행된함수가실패했을경우, 실패원인을알려주는에러메시지를반환한다. 어떤함수수행시오류가발생한경우바로오류를확인하지않고다른함수를호출하면, 이오류에대한정보가사라진다. 따라서오류발생시바로이함수를사용해서오류정보를확인해야한다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 altibase_errno() 의예제를참고하라. ACI 함수 47
48 altibase_fetch_lengths() 결과집합에서현재행의칼럼들의길이를반환한다. 구문 ALTIBASE_LONG * altibase_fetch_lengths ( ALTIBASE_RES result ); 인자 자료유형인자입 / 출력설명 ALTIBASE_RES result 입력결과집합핸들 반환값 칼럼들의크기를담은배열이반환된다. 에러가발생하면 NULL 이 반환된다. 설명 이함수는현재행을구성하고있는각칼럼의데이터길이를배열로반환한다. 사용자는이함수의반환값을이용해서각칼럼의데이터를담을버퍼의크기를결정할수있다. 칼럼의데이터가문자열인경우, NULL 종료문자를제외한길이가반환된다. 칼럼의데이터가 NULL 인경우, 반환되는길이는 ALTIBASE_NULL_DATA 이다. 이함수호출전에반드시결과집합핸들에대해서 altibase_fetch_row() 함수가한번이상실행되어야한다. altibase_fetch_row() 를실행하기전이거나결과집합에더이상반환될행이없는경우에이함수는 NULL 을반환한다. altibase_fetch_row() 로얻은데이터에는바이너리데이터가포함되어있을수있기때문에, strlen() 함수를이용해서데이터의길이를추정해서는안된다. 반드시 altibase_fetch_lengths() 함수를 48 Altibase C Interface Manual
49 사용해서반환될데이터의길이를확인해야한다. 이함수가반환한포인터가가리키는메모리는라이브러리내부에서 관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 ALTIBASE_LONG *lengths; int num_fields; int i; /*... omit... */ num_fields = altibase_num_fields(result); row = altibase_fetch_row(result); if (row!= NULL) { lengths = altibase_fetch_lengths(result); for (i = 0; i < num_fields; i++) { printf("column length %d : %ld\n", i, lengths[i]); } } /*... omit... */ ACI 함수 49
50 altibase_fetch_row() 결과집합으로부터한행을가져오는함수이다. 구문 ALTIBASE_ROW altibase_fetch_row ( ALTIBASE_RES result ); 인자 자료유형인자입 / 출력설명 ALTIBASE_RES result 입력결과집합핸들 반환값 한행의데이터가배열로반환된다. 결과집합에더이상행이없거나데이터를가져오는중에오류가발생한경우 NULL 이반환된다. 설명 이함수는결과집합에서다음행의데이터를가져온다. altibase_store_result() 후에이함수를호출했다면, 더이상가져올행이없을때만 NULL 이반환된다. 반환되는행데이터는배열로배열요소의개수는 altibase_num_fields(result) 로구할수있다. 각배열요소접근시사용가능한인덱스의범위는 0 에서 (altibase_num_fields(result) 1) 까지이다. 반환된각칼럼의데이터는타입안전방식으로표현 (type-safe representation) 되므로문자열또는바이너리형식을가진다. 그러므로숫자형데이터가필요한경우에는사용자가직접변환해서사용해야한다. 타입안전방식에대한자세한내용은 2 장의 "ALTIBASE_ROW" 타입을참고한다. 칼럼의데이터가 NULL 이면반환된배열중그칼럼에해당하는 50 Altibase C Interface Manual
51 배열요소도 NULL 포인터를가리킬것이다. altibase_fetch_row() 로얻은데이터에는바이너리값이포함되어있을수있기때문에, strlen() 함수를이용해서데이터의길이를추정해서는안된다. 반드시 altibase_fetch_lengths() 함수를사용해서반환될데이터의길이를확인해야한다. altibase_fetch_row() 가반환한데이터는한행을이루는칼럼들의값을모두포함하고있다. 그러므로결과집합내에 LOB 또는 GEOMETRY 타입의대용량데이터가포함된경우에메모리가과도하게사용될수있다. 그러므로대용량데이터를조회할때에는데이터를나눠서처리할수있는 Prepared Statement 방식을사용할것을권장한다. altibase_fetch_row() 로가져온행데이터의값은다음 altibase_fetch_row() 를호출하기전까지만유효하다. 그러므로한번가져온데이터를다시쓸계획이있다면, 다른변수에그값을복사해두어야한다. altibase_fetch_row() 함수가반환한포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 altibase_query() 의예제를참고하라. ACI 함수 51
52 altibase_field() 특정칼럼에대한정보를구하는함수이다. 구문 ALTIBASE_FIELD * altibase_field ( ALTIBASE_RES result, int fieldnr ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE_RES result 입력 결과집합핸들 int fieldnr 입력 칼럼의번호 (0 부터시작 ) 반환값 지정한칼럼정보가저장된메모리를가리키는포인터가반환된다. 반환할칼럼정보가없거나오류가발생한경우 NULL 이반환된다. 설명 이함수는지정한칼럼에대한정보를 ALTIBASE_FIELD 포인터로반환한다. 지정가능한칼럼번호는 0 에서 (altibase_num_fields(result)-1) 까지의값이다. 이함수가반환한포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 ALTIBASE_FIELD *field; int num_fields; int i; num_fields = altibase_num_fields(result); for (i = 0; i < num_fields; i++) { field = altibase_field(result, i); printf("%d : %s\n", i, field->name); 52 Altibase C Interface Manual
53 } ACI 함수 53
54 altibase_field_count() 가장최근에수행된 SELECT 질의결과집합의칼럼수를구하는 함수이다. 구문 int altibase_field_count ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 반환값 설명 0 보다큰값 결과집합의칼럼개수 0 결과집합이없음 ALTIBASE_INVALID_FIELDCOUNT 질의수행중에러발생 설명 이함수는바로이전에수행된 SELECT 질의결과집합의칼럼수를반환한다. 바로이전에수행된 SQL 문이 SELECT 문이아니라면, 0 이반환된다. 예제 /*... omit... */ rc = altibase_query(altibase, qstr); /*... check return value... */ printf("field count = %d\n", altibase_field_count(altibase)); 54 Altibase C Interface Manual
55 altibase_free_result() 결과집합핸들을닫는함수이다. 구문 int altibase_free_result ( ALTIBASE_RES result ); 인자 자료유형인자입 / 출력설명 ALTIBASE_RES result 입력결과집합핸들 반환값 함수수행이성공하면 ALTIBASE_SUCCESS, 그렇지않으면 ALTIBASE_ERROR 이반환된다. 설명 이함수는결과집합의저장을위해할당된메모리를시스템에반환한다. 다음의함수를이용해서결과집합의핸들을얻었다면, 결과집합핸들의사용이완료된후반드시 altibase_free_result() 를호출해서할당된메모리를해제해야한다. altibase_store_result() altibase_use_result() altibase_list_fields() altibase_list_tables() 핸들이해제된후에는그핸들을사용해서 ACI 함수를호출하면안된다. 연결핸들을사용해서결과집합의핸들을얻었다면 altibase_close() 함수를호출하거나핸들을재사용하기전에 altibase_free_result() 함수를호출하여결과집합핸들을먼저해제해야한다. 또한명령문 ACI 함수 55
56 핸들을사용하여결과집합핸들을얻었다면 altibase_stmt_close() 함수를호출하기전에 altibase_free_result() 함수를호출한다. 예제 altibase_query() 의예제를참고하라. 56 Altibase C Interface Manual
57 altibase_get_charset() 클라이언트가사용중인문자집합을반환한다. 구문 const char * altibase_get_charset ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 문자집합의이름이반환된다. 설명 이함수는클라이언트세션이사용중인문자집합의이름을문자열로반환한다. 이문자집합은 NLS_USE 환경변수, 연결문자열의속성또는 altibase_set_charset() 함수로설정이가능하며, 어떤문자집합도설정되어있지않은경우에는기본문자집합의이름이반환될것이다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 rc = altibase_set_charset(altibase, "KO16KSC5601"); /*... check return value... */ printf("nls_use = %s\n", altibase_get_charset(altibase)); ACI 함수 57
58 altibase_get_charset_info() 이함수는현재지원되지않는다. 58 Altibase C Interface Manual
59 altibase_host_info() 이함수는현재지원되지않는다. ACI 함수 59
60 altibase_init() 연결핸들을생성하는함수이다. 구문 ALTIBASE altibase_init ( void ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 함수수행이성공하면연결핸들이반환되고, 그렇지않으면 NULL 포인터가반환된다. 설명 이함수는 altibase_connect() 에사용될연결핸들을생성하고초기화하여반환한다. 이연결핸들은 altibase_close() 호출시에해제된다. 예제 altibase = altibase_init(); if (altibase == NULL) { return 1; } /*... omit... */ rc = altibase_close(altibase); /*... check return value... */ 60 Altibase C Interface Manual
61 altibase_list_fields() 조건에일치하는칼럼의정보를구하는함수이다. 구문 ALTIBASE_RES altibase_list_fields ( ALTIBASE altibase, const char * conditions[] ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 const char ** conditions 입력 제한조건. 3 개의문자열로구성된배열 반환값 함수수행이성공하면결과집합핸들이반환되고, 그렇지않으면 NULL 포인터가반환된다. 설명 이함수는명시한조건에일치하는칼럼에대한정보를결과집합 핸들로반환한다. 제한조건은문자열 3 개로구성된배열로지정해야한다. 배열 요소가 3 개보다많으면앞의 3 개를제외한나머지는무시된다. 이배열의각요소가의미하는바는다음과같다. 인덱스 조건 설명 0 사용자이름 사용자이름을사용해서결과집합을제한하기위한패턴값이다. 이 값을 NULL 또는 ALTIBASE_ALL_USERS로 지정하면 모든 사용자를의미한다. 1 테이블이름 테이블이름을사용해서결과집합을제한하기위한패턴값이다. 이값을 NULL 또는 ALTIBASE_ALL_TABLES로지정하면모든테이블을의미한다. ACI 함수 61
62 2 칼럼이름 칼럼이름을사용해서결과집합을제한하기위한패턴값이다. 이값을 NULL, ALTIBASE_ALL_COLUMNS, 또는빈문자열로 지정하면모든칼럼을의미한다. 제한조건으로지정한값은패턴을의미한다. 패턴의형식은 SQL 문의 LIKE 조건에지정하는방식과동일하다. 이에대한자세한 설명은 SQL Reference 를참고한다. 이함수의두번째인자를 NULL 로입력하면안된다. 배열요소 중의하나, 즉제한조건중적어도하나는유효한값이어야한다. 다른질의문을수행하는중에이함수를호출하거나, 이함수를 실행해서반환된결과집합을사용하는중에다른질의문을 수행해서는안된다. 이함수가반환하는결과집합의열은다음과같다. 열번호 열이름 자료유형 설명 1 TABLE_CAT VARCHAR 항상 NULL이반환된다. 2 TABLE_SCHEM VARCHAR TABLE_NAME 테이블이 속한 스키마의이름 3 TABLE_NAME VARCHAR 테이블의이름 (NOT NULL) 4 COLUMN_NAME VARCHAR (NOT NULL) 칼럼의이름. 5 DATA_TYPE VARCHAR (NOT NULL) 칼럼의 SQL 데이터타입 6 TYPE_NAME VARCHAR DATA_TYPE에 대응하는 데이터 (NOT NULL) 타입의이름을문자열로반환 7 COLUMN_SIZE INTEGER 문자데이터타입의경우, 칼럼의최대문자열길이가반환된다. Date 데이터타입의경우, 이칼럼은 날짜 값을 문자열로 변환한 값을 표시하는데 필요한 문자의 개수를 반환한다. 숫자데이터타입의경우, 이값은숫자의자리수이다. 8 BUFFER_LENGTH INTEGER 칼럼의데이터를저장하는데필요한버퍼의최대크기를바이트단위로반환 9 DECIMAL_DIGITS SMALLINT 칼럼의소수점이하자리수 (scale). scale이적용될수없는데이터타입의경우, NULL이반환된다. 10 NUM_PREC_RADIX SMALLINT 칼럼이숫자형데이터타입일경우이 62 Altibase C Interface Manual
63 값은 10 이 반환되며, COLUMN_SIZE와 DECIMAL_DIGITS는이칼럼에허용된 십진자릿수가반환된다. 예를들어 DECIMAL(12,5) 인 칼럼의 경우 NUM_PREC_RADIX는 10, COLUMN_SIZE는 12 그리고 DECIMAL_DIGITS는 5 가 반환될 것이다. 11 NULLABLE SMALLINT (NOT NULL) 칼럼이 NULL을허용하면 1, 허용하지않으면 0 이반환된다. 12 REMARKS VARCHAR 칼럼에대한설명 13 COLUMN_DEF VARCHAR 칼럼의디폴트값 14 SQL_DATA_TYPE SMALLINT (NOT NULL) 칼럼의 SQL 데이터타입. DATA_TYPE과동일한값이다. 15 SQL_DATETIME_SUB SMALLINT DATE 데이터타입을위한 subtype 코드. DATE 타입이 아닌 칼럼의 경우 NULL이반환된다. 16 CHAR_OCTET_LENGTH INTEGER 문자또는바이너리타입의칼럼일 경우 칼럼의 최대 길이가 바이트 단위로반환된다. 그 외의 타입일 경우 NULL이 반환된다. 17 ORDINAL_POSITION INTEGER (NOT NULL) 테이블에서칼럼의순서위치. 1 부터시작된다. 18 IS_NULLABLE VARCHAR NULL을 허용하면 "YES", 허용하지 않으면 "NO" 가반환된다. 19 STORE_TYPE CHAR(1) 칼럼의데이터가저장되는방식. 가변 (Variable) 방식일 경우 'V', 고정 (Fixed) 방식일 경우 'F' 가 반환된다. 결과집합은 TABLE_CAT, TABLE_SCHEM, TABLE_NAME, 및 ORDINAL_POSITION 의값으로정렬되어반환된다. altibase_list_fields() 는 altibase_use_result(), altibase_list_tables() 함수처럼결과집합을반환하는다른함수들과섞어서사용할수 없다. 즉, 결과집합을반환하는함수들의경우, 한함수에의해 반환된결과집합을먼저해제한후에다른함수를사용해서다른 결과집합을가져올수있다. 이함수를통해얻은결과집합은사용이끝난후에 ACI 함수 63
64 64 Altibase C Interface Manual altibase_free_result() 를이용해서해제해야한다.
65 altibase_list_tables() 조건에일치하는테이블의정보를구하는함수이다. 구문 ALTIBASE_RES altibase_list_tables ( ALTIBASE altibase, const char * conditions[] ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 const char ** conditions 입력 제한조건. 3 개의문자열로구성된배열 반환값 함수수행이성공하면결과집합핸들이반환되고, 그렇지않으면 NULL 포인터가반환된다. 설명 이함수는명시한조건에일치하는테이블에대한정보를결과집합 핸들로반환한다. 제한조건은문자열 3 개로구성된배열로지정해야한다. 배열 요소가 3 개보다많으면앞의 3 개를제외한나머지는무시된다. 이배열의각요소가의미하는바는다음과같다. 인덱스 조건 설명 0 사용자이름 사용자이름을이용해서결과집합을제한하기위한패턴값이다. 이값을 NULL 또는 ALTIBASE_ALL_USERS로지정하면모든사용자를의미한다. 1 테이블이름 테이블이름을이용해서결과집합을제한하기위한패턴값이다. 이값을 NULL 또는 ALTIBASE_ALL_TABLES로지정하면모든테이블을의미한다. ACI 함수 65
66 2 테이블유형 테이블유형을이용해서결과집합을제한하기위한패턴값이다. 이값을 NULL 또는 ALTIBASE_ALL_TABLE_TYPES로지정하면모든테이블유형을의미한다. 제한조건으로지정한값은패턴을의미한다. 패턴의형식은 SQL 문의 LIKE 조건에지정하는방식과동일하다. 이에대한자세한 설명은 SQL Reference 를참고한다. 이함수의두번째인자를 NULL 로입력하면안된다. 배열요소 중의하나, 즉제한조건중적어도하나는유효한값이어야한다. 다른질의문을수행하는중에이함수를호출하거나, 이함수를 실행해서반환된결과집합을사용하는중에다른질의문을 수행해서는안된다. 이함수가반환하는결과집합의열은다음과같다. 열번호 열이름 자료유형 설명 1 TABLE_CAT VARCHAR 항상 NULL이반환된다. 2 TABLE_SCHEM VARCHAR TABLE_NAME 테이블이 속한 스키마의이름 3 TABLE_NAME VARCHAR 테이블의이름 (NOT NULL) 4 TABLE_TYPE VARCHAR 테이블유형. 항상 TABLE 이반환된다. 5 REMARKS VARCHAR 사용되지않음 6 MAXROW BIGINT 테이블에입력가능한최대레코드의 개수. 이값이 0 이면최대레코드 개수에제한이없음을나타낸다. 7 TABLESPACE_NAME VARCHAR 테이블이저장된테이블스페이스의이름 8 TABLESPACE_TYPE INTEGER 테이블스페이스타입 9 PCTFREE INTEGER 테이블에설정된 PCTFREE 값. PCTFREE에 대한 설명은 SQL Reference의 CREATE TABLE 구문을참고하라. 10 PCTUSED INTEGER 테이블에설정된 PCTUSED 값. PCTUSED에 대한 설명은 SQL Reference의 CREATE TABLE 구문을 참고하라. 결과집합은 TABLE_TYPE, TABLE_CAT, TABLE_SCHEM, 및 TABLE_NAME 의값으로정렬되어반환된다. altibase_list_tables() 는 altibase_use_result(), altibase_list_fields() 66 Altibase C Interface Manual
67 함수처럼결과집합을반환하는다른함수들과섞어서사용할수없다. 즉, 결과집합을반환하는함수들의경우, 한함수에의해반환된결과집합을먼저해제한후에다른함수를사용해서다른결과집합을가져올수있다. 이함수를통해얻은결과집합은사용이끝난후에 altibase_free_result() 를이용해서해제해야한다. ACI 함수 67
68 altibase_next_result() 다음결과집합에접근하기위해사용되는함수이다. 구문 int altibase_next_result ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 반환값 ALTIBASE_SUCCESS ALTIBASE_NO_DATA ALTIBASE_ERROR 설명다음결과집합이존재함다음결과집합이존재하지않음에러발생 설명 이함수는이전에여러결과집합을가져오는명령을수행한경우, 다음결과집합에접근하기위해사용된다. 이전에가져온결과집합이있다면, altibase_next_result() 를호출하기전에 altibase_free_result() 로그결과집합을먼저해제해야한다. 이함수수행후에는 altibase_query() 를사용해서그다음구문을수행한것과같은상황이된다. 이는 altibase_store_result(), altibase_affected_rows() 등의함수를호출할수있음을의미한다. 68 Altibase C Interface Manual
69 altibase_num_fields() 결과집합의칼럼수를구하는함수이다. 구문 int altibase_num_fields ( ALTIBASE_RES result ); 인자 자료유형인자입 / 출력설명 ALTIBASE_RES result 입력결과집합핸들 반환값 결과집합의칼럼수가반환된다. SQL 문수행시오류가발생했으면 ALTIBASE_INVALID_FIELDCOUNT 가반환될것이다. 설명 이함수는결과집합의칼럼수를반환한다 : 칼럼수는결과집합핸들또는연결핸들을사용해서얻을수있다. 만약이전의 altibase_store_result() 또는 altibase_use_result() 호출에서 NULL 이반환된경우에는연결핸들을이용해야된다. 연결핸들로칼럼개수를구할때는 altibase_field_count() 함수를이용해야한다. ACI 함수 69
70 altibase_num_rows() 결과집합의행의개수를구하는함수이다. 구문 ALTIBASE_LONG altibase_num_rows ( ALTIBASE_RES result ); 인자 자료유형인자입 / 출력설명 ALTIBASE_RES result 입력결과집합핸들 반환값 결과집합의행의개수가반환된다. 설명 이함수는결과집합의행의개수를반환한다. 결과집합을가져온함수가 altibase_store_result() 였는지, 아니면 altibase_use_result() 였는지에따라서이함수의결과는달라진다. 만약 altibase_store_result() 가사용되었다면, 결과집합에포함된전체레코드의개수가정확하게반환된다. 하지만 altibase_use_result() 가사용되었다면, 전체레코드가모두 fetch 되기전까지는정확한레코드수가반환되지않는다. INSERT, UPDATE, 또는 DELETE 문수행으로인해변경된행의개수를구하려면 altibase_affected_rows() 를사용하라. 70 Altibase C Interface Manual
71 altibase_proto_version() 클라이언트와서버사이에사용되는통신프로토콜의버전을구하는 함수이다. 구문 int altibase_proto_version ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 통신프로토콜의버전을나타내는상수가반환된다. 입력된연결핸들이유효하지않거나아직서버와연결되기전이거나또는프로토콜버전을얻을수없는경우에는 ALTIBASE_INVALID_VERSION 이반환된다. 설명 이함수는통신프로토콜의버전을나타내는상수값을반환한다. 반환값의형식은 MMmmttSSpp 이며각각의의미는다음과같다. 형식 설명 비고 MM 주버전 mm 부버전 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. tt 텀 항상 0으로채워서반환된다. SS 패치셋 항상 0으로채워서반환된다. pp 패치 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서 ACI 함수 71
72 반환된다. 예를들어, 이함수의반환값이 이면통신프로토콜의 버전은 이다. 72 Altibase C Interface Manual
73 altibase_proto_verstr() 클라이언트와서버사이에사용되는통신프로토콜의버전을구하는 함수이다. 구문 const char * altibase_proto_verstr ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 통신프로토콜의버전을나타내는문자열이반환된다. 입력된연결핸들이유효하지않거나아직서버와연결되기전이거나또는프로토콜버전을얻을수없는경우에는 NULL 이반환된다. 설명 이함수는통신프로토콜의버전을나타내는문자열을반환한다. 반환값의형식은 x.x.0.0.x 이며순서대로주버전, 부버전, 패치를의미한다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. ACI 함수 73
74 altibase_query() 질의를수행하는함수이다. 구문 int altibase_query ( ALTIBASE altibase, const char * qstr ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 const char * qstr 입력 질의문 (NULL 종료 문자열이어야 한다 ) 반환값 함수수행이성공하면 ALTIBASE_SUCCESS, 그렇지않으면 ALTIBASE_ERROR 가반환된다. 설명 이함수는질의문을실행한다. 질의문은반드시널종료문자열이여야하며, 한개의 SQL 문이어야한다. 세미콜론 (;) 으로연결된다중 SQL 문은지원되지않는다. 다중 SQL 문을실행하려면저장프로시저를활용하라. 예제 #define QSTR "SELECT last_name, first_name FROM friends" ALTIBASE altibase; ALTIBASE_RES result; ALTIBASE_ROW row; ALTIBASE_LONG *lengths; int num_fields; int rc; int i; 74 Altibase C Interface Manual
75 /*... omit... */ rc = altibase_qeury(altibase, QSTR); /*... check return value... */ result = altibase_use_result(altibase); /*... check return value... */ num_fields = altibase_num_fields(result); while ((row = altibase_fetch_row(result))!= NULL) { lengths = altibase_fetch_lengths(result); for (i = 0; i < num_fields; i++) { printf("(%ld) %s", lengths[i], (row[i] == NULL? "null" : row[i])); } printf("\n"); } rc = altibase_free_result(result); /*... check return value... */ /*... omit... */ ACI 함수 75
76 altibase_rollback() 이함수는현재트랜잭션을롤백한다. 구문 int altibase_rollback ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는현재연결된세션에서수행중인트랜잭션을철회 ( 롤백 ) 한다. 해당세션이 AUTOCOMMIT 모드가아닌경우, 이함수수행후다음 SQL 문실행시에자동으로새로운트랜잭션이시작된다 예제 altibase_set_autocommit() 의예제를참고하라. 76 Altibase C Interface Manual
77 altibase_server_version() ALTIBASE HDB 서버의버전을구하는함수이다. 구문 int altibase_server_version ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 ALTIBASE HDB 서버의버전을나타내는상수가반환된다. 입력된연결핸들이유효하지않거나아직서버와연결되기전이거나또는서버의버전을얻을수없는경우에는 ALTIBASE_INVALID_VERSION 이반환된다. 설명 이함수는 ALTIBASE HDB 서버의버전을나타내는상수값을 반환한다. 반환값의형식은 MMmmttSSpp 이며각각의의미는 다음과같다. 형식 설명 비고 MM 주버전 mm 부버전 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. tt 텀 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. SS 패치셋 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서 ACI 함수 77
78 반환된다. pp 패치 버전의자리수가 2보다작을경우, 나머지자리는 0으로채워서반환된다. 예를들어, 이함수의반환값이 이면 ALTIBASE HDB 서버의버전은 이다. 78 Altibase C Interface Manual
79 altibase_server_verstr() ALTIBASE HDB 서버의버전을구하는함수이다. 구문 const char * altibase_server_verstr ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 ALTIBASE HDB 서버의버전을나타내는문자열이반환된다. 입력된연결핸들이유효하지않거나아직서버와연결되기전이거나또는프로토콜버전을얻을수없는경우에는 NULL 이반환된다. 설명 이함수는 ALTIBASE HDB 서버의버전을나타내는문자열을반환한다. 반환값의형식은 x.x.x.x.x 이며순서대로주버전, 부버전, 텀, 패치셋, 패치를의미한다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. ACI 함수 79
80 altibase_set_charset() 문자집합 (character set) 을설정하는함수이다. 구문 int altibase_set_charset ( ALTIBASE altibase, const char * charset ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 const char * charset 입력 설정할문자집합 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는클라이언트세션에서사용할문자집합을설정한다. 문자집합은서버와연결하기전에설정되어야한다. 문자집합은이함수외에 ALTIBASE_NLS_USE 환경변수또는서버접속시연결문자열의속성을사용해서도설정이가능한다. 문자집합설정은 altibase_set_charset() 함수, 연결속성문자열, ALTIBASE_NLS_USE 환경변수순으로우선순위가주어진다. 예제 ALTIBASE altibase; altibase = altibase_init(); /*... check return value... */ rc = altibase_set_charset(altibase, "KO16KSC5601")); if (ALTIBASE_NOT_SUCCEEDED(rc)) 80 Altibase C Interface Manual
81 { } /*... error handling... */ rc = altibase_connect(altibase, CONNSTR); /*... check return value... */ ACI 함수 81
82 altibase_set_autocommit() 자동커밋 (autocommit) 여부를설정하는함수이다. 구문 int altibase_set_autocommit ( ALTIBASE altibase, int mode ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 int mode 입력 Autocommit 여부. ALTIBASE_AUTOCOMMIT_ON 또는 ALTIBASE_AUTOCOMMIT_OFF로 설정가능하다. 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 mode 가 ALTIBASE_AUTOCOMMIT_ON 이면자동커밋, ALTIBASE_AUTOCOMMIT_OFF 이면수동커밋으로설정된다. 아무것도설정하지않았을때는기본적으로자동커밋모드이다. 반드시위의두값중하나만을사용해야한다. 그렇지않을경우, 함수수행은실패할것이다. 예제 rc = altibase_set_autocommit(altibase, ALTIBASE_AUTOCOMMIT_OFF); /*... check return value... */ 82 Altibase C Interface Manual
83 /*... omit... */ rc = (error_exist)? altibase_rollback(altibase) : altibase_commit(altibase); if (ALTIBASE_NOT_SUCCEEDED(rc)) { /*... error handling... */ } rc = altibase_set_autocommit(altibase, ALTIBASE_AUTOCOMMIT_ON); /*... check return value... */ ACI 함수 83
84 altibase_set_failover_callback() Failover 를위한콜백함수를등록하는함수이다. 구문 int altibase_set_failover_callback ( ALTIBASE altibase, ALTIBASE_FAILOVER_CALLBACK callback, void * app_context ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 ALTIBASE_FAILOVER_C callback 입력 등록할콜백함수. ALLBACK 등록을 해제하려면 여기에 NULL을 입력한다. void * app_context 입력 사용자컨텍스트. 콜백함수내에서사용할데이터가저장된버퍼를가리키는포인터 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는 STF (Service Time Failover) 발생시응용프로그램과 ACI 라이브러리의통신을위한콜백함수를등록한다. STF 발생시사용자가특별히처리해주어야할작업이있을경우, 콜백함수에처리할작업을지시하고 altibase_set_failover_callback 함수를사용해서콜백함수를등록하면된다. 콜백함수의사용을해제하려면, 두번째인자로 NULL 을입력하여 altibase_set_failover_callback 함수를호출하면된다. Failover 콜백함수의등록은 altibase_connect() 가성공한후에 84 Altibase C Interface Manual
85 수행되어야한다. 예제 6 장 Failover 를참고하라. ACI 함수 85
86 altibase_set_option() 연결옵션을설정하는함수이다. 구문 int altibase_set_option ( ALTIBASE altibase, ALTIBASE_OPTION option, const void * arg ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE altibase 입력 연결핸들 ALTIBASE_OPTION option 입력 설정할옵션 const void * arg 입력 설정할옵션값 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는 ALTIBASE HDB 서버에접속할때사용되는옵션을설정한다. 여러옵션을설정하려면, 각각의옵션과함께이함수를여러번호출해야한다. 이함수는 altibase_init() 를호출한후, altibase_connect() 를호출하기전에사용되어야한다. 연결옵션에대한자세한내용은 2 장의 "enum ALTIBASE_OPTION" 절을참고한다. 예제 ALTIBASE altibase; 86 Altibase C Interface Manual
87 altibase = altibase_init(); /*... check return value... */ rc = altibase_set_option(altibase, ALTIBASE_APP_INFO, "myapp"); /*... check return value... */ rc = altibase_set_option(altibase, ALTIBASE_NLS_USE, "KO16KSC5601"); /*... check return value... */ rc = altibase_connect(altibase, CONNSTR); if (ALTIBASE_NOT_SUCCEEDED(rc)) { fprintf(stderr, "Failed to connect: %s\n", altibase_error(altibase)); } ACI 함수 87
88 altibase_sqlstate() 바로이전에실행된 SQL 명령문에대한 SQLSTATE 를구하는 함수이다. 구문 const char * altibase_sqlstate ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 SQLSTATE 에러코드를나타내는널종료문자열이반환된다. 설명 이함수는가장최근에실행된 SQL 명령문에대한 SQLSTATE 에러코드를나타내는널종료문자열을반환한다. SQLSTATE 는 5 개의문자로이루어진다. 대표적으로 "00000" 은 " 에러없음 " 을나타낸다. SQLSTATE 에대한자세한내용은 Error Message Reference 를참고한다. SQLSTATE 는 altibase_errno() 가반환하는값과는다르다. 에러정보를확인해서처리해야할루틴이있다면 SQLSTATE 값을사용할것을권장한다. 일반적으로 altibase_errno() 의반환값을확인해서에러처리루틴을작성하는것을권장하지않는다. SQLSTATE 와 altibase_errno() 의반환값은 1:1 로맵핑되지않는다. 그러므로 altibase_errno() 의반환값을보고 SQLSTATE 를추측하거나, SQLSTATE 를이용해서 altibase_errno() 의반환값을추측해서는안된다. 어떤함수수행시오류가발생한경우바로오류를확인하지않고 88 Altibase C Interface Manual
89 다른함수를호출하면, 이오류에대한정보가사라진다. 따라서오류발생시바로이함수를사용해서오류정보를확인해야한다. 이함수가반환한 char 포인터가가리키는메모리는라이브러리내부에서관리되므로절대로사용자가임의로변경하거나해제해서는안된다. 예제 altibase_errno() 의예제를참고하라. ACI 함수 89
90 altibase_store_result() 질의수행에대한결과집합전체를가져오는함수이다. 구문 ALTIBASE_RES altibase_store_result ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 질의수행결과에대한결과집합의핸들이반환된다. 에러가발생한 경우 NULL 이반환된다. 설명 이함수는질의수행의전체결과집합에대한핸들을반환한다. 이함수를수행하면질의수행결과를서버로부터모두가져와서클라이언트에저장해둔다. 이함수호출후 altibase_fetch_row() 를호출할때는이미서버로부터모든결과집합을받아온상태이므로서버와통신하지않으며, 받아둔결과집합의데이터가반환된다. 이함수수행시에는모든결과집합을받아두므로 LOB 이나 GEOMETRY 와같은대용량칼럼이포함되어있거나결과행의개수가많다면, 메모리가과다하게사용될수있으므로이함수를쓸때는주의가필요하다. altibase_store_result() 는질의결과가없을때에도 NULL 대신빈결과집합을반환한다. altibase_store_result() 를호출해서 NULL 이반환되었다면, 결과집합을읽는데실패한것이다. altibase_use_result() 대신 altibase_store_result() 를사용하면다음과같은함수를추가로사용할수있다 : 90 Altibase C Interface Manual
91 altibase_num_rows() altibase_data_seek() altibase_store_result() 는 altibase_use_result(), altibase_list_tables() 함수처럼결과집합을반환하는다른함수들과섞어서사용할수없다. 즉, 결과집합을반환하는함수들의경우, 한함수에의해반환된결과집합을먼저해제한후에다른함수를사용해서다른결과집합을가져올수있다. 이함수를통해얻은결과집합은사용이끝난후에 altibase_free_result() 를이용해서해제해야한다. 예제 altibase_query() 과 altibase_data_seek() 의예제를참고하라. ACI 함수 91
92 altibase_use_result() 질의수행에대한결과집합을가져오는함수이다. 구문 ALTIBASE_RES altibase_use_result ( ALTIBASE altibase ); 인자 자료유형인자입 / 출력설명 ALTIBASE altibase 입력연결핸들 반환값 질의수행결과에대한결과집합의핸들이반환된다. 에러가발생한 경우 NULL 이반환된다. 설명 이함수는질의수행의결과집합에대한핸들을반환한다. 이함수는 altibase_store_result() 와달리서버로부터모든결과집합을한꺼번에가져오지않는다. 이함수호출후 altibase_fetch_row() 를호출할때마다서버로부터데이터를가져온다. altibase_use_result() 는질의결과가없을때에도 NULL 대신빈결과집합을반환한다. altibase_use_result() 를호출해서 NULL 이반환되었다면, 결과집합을읽는데실패한것이다. altibase_use_result() 는 altibase_store_result(), altibase_list_tables() 함수처럼결과집합을반환하는다른함수들과섞어서사용할수없다. 즉, 결과집합을반환하는함수들의경우, 한함수에의해반환된결과집합을먼저해제한후에다른함수를사용해서다른결과집합을가져올수있다. 이함수를통해얻은결과집합은사용이끝난후에 92 Altibase C Interface Manual
93 altibase_free_result() 를이용해서해제해야한다. 예제 altibase_query() 의예제를참고하라. ACI 함수 93
94
95 4. Prepared Statement 관련 ACI 함수 이장은 Prepared Statement 와관련된 Altibase C 인터페이스 함수의명세를기술한다. Prepared Statement 관련 ACI 함수 95
96 altibase_stmt_affected_rows() 바로이전에실행한 UPDATE, DELETE 또는 INSERT 문에의해 영향을받은레코드의수를구하는함수이다. 구문 ALTIBASE_LONG altibase_stmt_affected_rows ( ALTIBASE_STMT stmt ); 인자 자료유형인자입 / 출력설명 ALTIBASE_STMT stmt 입력명령문핸들 반환값 반환값 설명 0 보다큰값 SQL문에의해영향을받은레코드의개수 0 SQL문에의해영향을받은레코드가없음 ALTIBASE_INVALID_AFFECTEDROW UPDATE, DELETE, 또는 INSERT 수행중에러발생 설명 이함수는마지막으로수행한 SQL 문의종류에따라다음과같은값을반환한다 : UPDATE 문 : 변경된레코드수 DELETE 문 : 삭제된레코드수 INSERT 문 : 추가된레코드수만약마지막으로수행한 SQL 문이 SELECT 문이었다면이함수는 0 을반환할것이다. SELECT 문에의해선택된레코드의개수를얻고자할때는 altibase_stmt_num_rows() 를사용해야한다. 예제 char *qstr = "UPDATE t1 SET val = val * 1.1 WHERE type = 1"; 96 Altibase C Interface Manual
97 rc = altibase_stmt_prepare(stmt, qstr); /*... check return value... */ rc = altibase_stmt_execute(stmt); /*... check return value... */ printf("%ld updated\n", altibase_stmt_affected_rows(stmt)); Prepared Statement 관련 ACI 함수 97
98 altibase_stmt_bind_param() SQL 문의파라미터마커에입력데이터를바인딩하는함수이다. 구문 int altibase_stmt_bind_param ( ALTIBASE_STMT stmt, ALTIBASE_BIND * bind ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE_STMT stmt 입력 명령문핸들 ALTIBASE_BIND * bind 입력 바인딩할데이터와그정보가저장된배열 반환값 함수수행에성공하면 ALTIBASE_SUCCESS, 실패하면 ALTIBASE_ERROR 이반환된다. 설명 이함수는 altibase_stmt_prepare() 로전달된 SQL 문의파라미터마커 (?) 에입력데이터를바인딩한다. 이함수의두번째인자 bind 는배열이며, 배열요소의개수는 SQL 문의파라미터마커의개수와동일해야한다. 예를들어, SQL 문에 3 개의파라미터마커가포함되어있으면, 배열의크기가 3 인 ALTIBASE_BIND 구조체의배열을선언하고, 이배열의주소를두번째인자로전달해야한다. 이함수로바인딩된정보는 altibase_stmt_reset(), altibase_stmt_close() 또는 altibase_close() 가호출되기전까지는클라이언트라이브러리내에서유효하다. 그러므로, 하나의 SQL 문으로데이터만바꿔가면서수행하고자할때, altibase_stmt_prepare() 와 altibase_stmt_bind_param() 은한번만 98 Altibase C Interface Manual
99 수행한후바인딩된변수의값만변경하면서 altibase_stmt_execute() 을여러번호출하면된다. 이함수는 altibase_stmt_prepare() 와 altibase_stmt_set_array_bind() 호출후, altibase_stmt_execute() 가호출되기전에사용되어야한다. 예제 #define PARAM_COUNT 2 #define STR_SIZE 50 #define QSTR "INSERT INTO t1 VALUES (?,?)" int int_dat; char str_dat[str_size]; ALTIBASE_LONG length[param_count]; ALTIBASE altibase; ALTIBASE_STMT stmt; ALTIBASE_BIND bind[param_count]; int rc; int i; /*... omit... */ int_dat = 1; strcpy(str_dat, "test1"); length[0] = sizeof(int); length[1] = ALTIBASE_NTS; memset(bind, 0, sizeof(bind)); bind[0].buffer_type bind[0].buffer bind[0].length = ALTIBASE_BIND_INTEGER; = &int_dat; = &length[0]; bind[1].buffer_type = ALTIBASE_BIND_STRING; bind[1].buffer = str_dat; bind[1].buffer_length = STR_SIZE; bind[1].length = &length[1]; stmt = altibase_stmt_init(altibase); /*... check return value... */ rc = altibase_stmt_prepare(stmt, QSTR); /*... check return value... */ rc = altibase_stmt_bind_param(stmt, bind); if (ALTIBASE_NOT_SUCCEEDED(rc)) { for (i = 0; i < PARAM_COUNT; i++) { printf("bind %d : %d\n", i, bind[i].error); } /*... error handling... */ } rc = altibase_stmt_execute(stmt); /*... check return value... */ Prepared Statement 관련 ACI 함수 99
100 altibase_stmt_bind_result() 질의수행결과집합의칼럼데이터를출력할버퍼에연결 ( 즉, 바인드 ) 하는함수이다. 구문 int altibase_stmt_bind_result ( ALTIBASE_STMT stmt, ALTIBASE_BIND * bind ); 인자 자료유형 인자 입 / 출력 설명 ALTIBASE_STMT stmt 입력 명령문핸들 ALTIBASE_BIND * bind 입력 데이터와데이터관련정보를받을버퍼의배열 반환값 함수수행이성공하면 ALTIBASE_SUCCESS, 그렇지않으면 ALTIBASE_ERROR 가반환된다. 설명 이함수는결과집합의칼럼을응용프로그램의변수에바인딩한다. 이함수의두번째인자 bind 는배열로, 배열요소의개수는결과집합의칼럼개수와동일해야한다. 예를들어, 결과집합의칼럼수가 3 개이면, 배열의크기가 3 인 ALTIBASE_BIND 구조체의배열을선언하고이배열의주소를이함수의두번째인자로전달해야한다. 이함수로바인딩된정보는 altibase_stmt_reset(), altibase_stmt_close() 또는 altibase_close() 가호출되기전까지는클라이언트라이브러리내에서유효하다. altibase_stmt_fetch() 를호출할때마다결과집합의한행이바인딩된버퍼에반환된다. 100 Altibase C Interface Manual
101 이함수는 altibase_stmt_prepare() 와 altibase_stmt_set_array_fetch() 호출후, altibase_stmt_store_result() 또는 altibase_stmt_use_result() 가호출되기전에사용되어야한다. 예제 #define FIELD_COUNT 2 #define STR_SIZE 50 #define QSTR "SELECT * FROM t1" ALTIBASE altibase; ALTIBASE_STMT stmt; ALTIBASE_BIND bind[field_count]; int int_dat; char str_dat[str_size]; ALTIBASE_LONG length[field_count]; ALTIBASE_BOOL is_null[field_count]; int rc; int row; /*... omit... */ stmt = altibase_stmt_init(altibase); /*... check return value... */ rc = altibase_stmt_prepare(stmt, QSTR); /*... check return value... */ rc = altibase_stmt_execute(stmt); /*... check return value... */ memset(bind, 0, sizeof(bind)); bind[0].buffer_type bind[0].buffer bind[0].length bind[0].is_null = ALTIBASE_BIND_INTEGER; = &int_dat; = &length[0]; = &is_null[0]; bind[1].buffer_type = ALTIBASE_BIND_STRING; bind[1].buffer = str_dat; bind[1].buffer_length = STR_SIZE; bind[1].length = &length[1]; bind[1].is_null = &is_null[1]; rc = altibase_stmt_bind_result(stmt, bind); if (ALTIBASE_NOT_SUCCEEDED(rc)) { for (i = 0; i < FIELD_COUNT; i++) { printf("bind %d : %d\n", i, bind[i].error); } /*... error handling... */ } /* altibase_stmt_store_result() is optional */ rc = altibase_stmt_store_result(stmt); /*... check return value... */ for (row = 0; (rc = altibase_stmt_fetch(stmt))!= ALTIBASE_NO_DATA; row++) { Prepared Statement 관련 ACI 함수 101
102 if (ALTIBASE_NOT_SUCCEEDED(rc)) { /*... error handling... */ break; } } printf("row %d : ", row); if (is_null[0] == ALTIBASE_TRUE) { printf("{null}"); } else { printf("%d", int_dat); } printf(", "); if (is_null[1] == ALTIBASE_TRUE) { printf("{null}"); } else { printf("(%d) %s", length[1], str_dat); } printf("\n"); rc = altibase_stmt_free_result(stmt); /*... check return value... */ 102 Altibase C Interface Manual
강의 개요
DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE
More information목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE
ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>
리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationAltibase Stored Procedure Manual
ALTIBASE HDB Application Development C/C++ External Procedures Manual Release 6.3.1 (April 16, 2015) ----------------------------------------------------------- ALTIBASE Application Development C/C++ External
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More information13주-14주proc.PDF
12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More information목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate
ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4
ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationAltibase Starting User's Manual
ALTIBASE HDB Tools & Utilities Altibase Hadoop Connector User's Manual Release 6 (April 17, 2015) ----------------------------------------------------------- ALTIBASE Tools & Utilities Altibase Hadoop
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationDBMS & SQL Server Installation Database Laboratory
DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.
More informationALTIBASE HDB Patch Notes
ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake
More information윤성우의 열혈 TCP/IP 소켓 프로그래밍
C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More informationThe Pocket Guide to TCP/IP Sockets: C Version
얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More information문서 템플릿
HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationMicrosoft PowerPoint - additional01.ppt [호환 모드]
1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 5 장 데이터송수신 (3) 1 파일전송메시지구성예제 ( 고정크기메시지 ) 전송방식 : 고정크기 ( 바이너리전송 ) 필요한전송정보 파일이름 ( 최대 255 자 => 255byte 의메모리공간필요 ) 파일크기 (4byte 의경우최대 4GB 크기의파일처리가능 ) 파일내용 ( 가변길이, 0~4GB 크기 ) 메시지구성 FileName (255bytes)
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드
More informationMySQL-.. 1
MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More information기초컴퓨터프로그래밍
구조체 #include int main() { } printf("structure\n"); printf("instructor: Keon Myung Lee\n"); return 0; 내용 구조체 (struct) Typedef 공용체 (union) 열거형 (enum) 구조체 구조체 (structure) 어떤대상을표현하는서로연관된항목 ( 변수 )
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationThe Pocket Guide to TCP/IP Sockets: C Version
인터넷프로토콜 03 장 도메인네임시스템과주소 패밀리 (IPv4-IPv6 서비스 ) 1 목차 제 3 장도메인네임시스템과주소패밀리 3.1 도메인네임주소를숫자주소로매핑하기 3.2 IP 버전에무관한주소-범용코드의작성 3.3 숫자주소에서도메인네임주소획득하기 2 getaddrinfo() 를활용한주소 범용 (Generic) 코드 주소범용 (Generic) 코드란? 주소버전
More informationAltibase Installation Manual
ALTIBASE HDB Application Development Windows ODBC Driver Installer User s Guide Release 6.3.1 (April 17, 2015) ----------------------------------------------------------- ALTIBASE Application Development
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationALTIBASE 사용자가이드 Templete
Real Alternative DBMS ALTIBASE, Since 1999 WINDOWS ADO.NET 환경의 ALTIBASE 개발가이드 2010. 09 Copyright c 2000~2013 ALTBASE Corporation. All Rights Reserved. Document Control Change Record Date Author Change
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More informationPowerPoint 프레젠테이션
Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2
More informationMicrosoft PowerPoint - 10Àå.ppt
10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어
More informationInsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins
Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.
More informationPowerPoint 프레젠테이션
Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More information10.ppt
: SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL
More information컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationC 프로그램의 기본
C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More information윈도우시스템프로그래밍
데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More informationPowerPoint Presentation
자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,
More informationPowerPoint Template
16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //
More informationvi 사용법
네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o
More information게시판 스팸 실시간 차단 시스템
오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationTablespace On-Offline 테이블스페이스 온라인/오프라인
2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationPowerPoint Presentation
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 변수와상수의개념에대해알아본다.
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information슬라이드 1
정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More information1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할
15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p
More information@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a
1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationC++ Programming
C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator
More information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More information17장 클래스와 메소드
17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는
More informationJVM 메모리구조
조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.
More informationData Structure
Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp
1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More informationWINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역
WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,
More information