database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Q&A 363 게시물 읽기
No. 363
ESQL/C 를 이용한 multi-connection
작성자
그리움
작성일
2000-11-03 21:26
조회수
5,462

Q3 ESQL/C 프로그램을 작성하려 하는데, 두개의 DB Server에 CONNECT해야 할 필요가 있습니다. multi connection이 가능한가요?

 

A 가능합니다. 다음의 간단히 작성한 프로그램을 참고하십시오.

#include <stdio.h>

$include sqlca.h;

$include locator.h;

 

main()

{

int i=0;

$char code[2 + 1];

$char sname[15 + 1];

 

printf("Sample ESQL Program running.\n");

 

$connect to 'stores7@byrhee_731t' as 'con_1';

if (SQLCODE != 0) {

printf("byrhee_731t DB connect error(%d)\n",

sqlca.sqlcode);

exit(1);

}

printf(" byrhee_731t DB connect success(%d)\n",

sqlca.sqlcode);

 

$connect to 'stores7@maserv_tcp' as 'con_2';

if (SQLCODE != 0) {

printf("maserv_tcp DB connect error(%d)\n",

sqlca.sqlcode);

exit(1);

}

printf("maserv_tcp DB connect success(%d)\n",

sqlca.sqlcode);

 

$declare sel_cursor cursor for

select code, sname into $code, $sname

from state;

if (SQLCODE != 0) {

printf("declare cursor error(%d)\n", sqlca.sqlcode);

exit(1);

}

printf("declare cursor success(%d)\n", sqlca.sqlcode);

 

$open sel_cursor;

if (SQLCODE != 0) {

printf("cursor open error(%d)\n", sqlca.sqlcode);

exit(1);

}

printf("cursor open success(%d)\n", sqlca.sqlcode);

 

for (;;)

{

 

$set connection 'con_2';

if (SQLCODE != 0) {

printf("set connection maserv_tcp error (%d)\n",

sqlca.sqlcode);

exit(1);

}

printf("set connection maserv_tcp success (%d) : SELECT\n",

sqlca.sqlcode);

 

$fetch sel_cursor;

if (SQLCODE == SQLNOTFOUND)

break;

 

$set connection 'con_1';

if (SQLCODE != 0) {

printf("set connection byrhee_731t error (%d)\n",

sqlca.sqlcode);

exit(1);

}

printf("set connection byrhee_731t success (%d) :

INSERT \n", sqlca.sqlcode);

 

$insert into state values ($code, $sname);

if (SQLCODE != 0) {

printf("insert error(%d)\n", sqlca.sqlcode);

exit(1);

}

printf("insert success(%d)\n", sqlca.sqlcode);

i=i+1;

} /* end for-loop */

 

printf("%d 행이 insert 되었습니다.\n",i);

 

$close sel_cursor;

if (SQLCODE != 0) {

printf("close sel_cursor error(%d)\n", sqlca.sqlcode);

exit(1);

}

printf("sel_cursor closed(%d)\n", sqlca.sqlcode);

 

$free sel_cursor;

if (SQLCODE != 0) {

printf("free sel_cursor error(%d)\n", sqlca.sqlcode);

exit(1);

}

printf("sel_cursor freed(%d)\n", sqlca.sqlcode);

 

$disconnect 'con_1';

if (SQLCODE != 0) {

printf("disconnect byrhee_731t error(%d)\n",

sqlca.sqlcode);

exit(1);

}

printf(" byrhee_731t disconnected (%d)\n", sqlca.sqlcode);

 

$disconnect 'con_2';

if (SQLCODE != 0) {

printf("disconnect maserv_tcp error(%d)\n",

sqlca.sqlcode);

exit(1);

}

printf(" maserv_tcp disconnected (%d)\n", sqlca.sqlcode);

 

printf("\nSample Program over.\n");

 

} /* end of main() */

 

 

한 가지 주의할 점은 두 서버간의 환경변수 중 한 쪽 서버쪽에만 필요한 환경변수가 있다면 그 환경변수를 setting해주고 unset하는 작업이 꼭 필요하다는 점입니다. 다음과 같이 환경변수를 설정하는 내용으로 function을 만들어 이 function을 필요한 시점에 호출하여 실행하도록 하는 것이 좋습니다. 아래의 내용처럼 특히 ONCONFIG, LOCALE 변수와 INFORMIXSQLHOSTS 변수를 주의하십시오.

 

 

to_env1()

{

putenv("INFORMIXSERVER=byrhee_731t");

putenv("INFORMIXDIR=/CS1/IDS731UC");

putenv("ONCONFIG=onconfig.byrhee");

putenv("INFORMIXSQLHOSTS=/CS1/byrhee/sqlhosts");

putenv("DB_LOCALE=en_us.8859-1");

putenv("SERVER_LOCALE=en_us.8859-1");

putenv("CLIENT_LOCALE=en_us.8859-1");

}

to_env2()

{

putenv("INFORMIXSERVER=maserv_tcp");

putenv("INFORMIXDIR=/post01/Product/ON724UC1");

putenv("ONCONFIG=onconfig.csdb");

putenv("INFORMIXSQLHOSTS=/post01/Product/ON724UC1/etc/sqlhosts");

putenv("DB_LOCALE=ko_kr.ksc");

putenv("SERVER_LOCALE=ko_kr.ksc");

putenv("CLIENT_LOCALE=ko_kr.ksc");

}

[Top]
No.
제목
작성자
작성일
조회
367Raw Device를 dbspace의 chunk로 사용할 때의 장점과 주의 사항
그리움
2000-11-03
5394
366DB space 와 chunk 를 추가하는 법 [1]
그리움
2000-11-03
8045
364JDBC 드라이브 이용에 관한 질문
그리움
2000-11-03
5231
363ESQL/C 를 이용한 multi-connection
그리움
2000-11-03
5462
362"Must be dbsa to run this program." 또는 -951 오류
그리움
2000-11-03
5234
361-256 오류: 데이터베이스 로깅 모드 변경 [1]
그리움
2000-11-03
5937
360Insert 후 serial column 의 값 알아내기; sqlca.sqlerrd[1]
그리움
2000-11-03
6927
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.029초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다