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 2481 게시물 읽기
No. 2481
db명으로 접속이 아닌 instance명으로 접속할려면...esql
작성자
초보
작성일
2008-03-04 09:52
조회수
6,837

#include <stdio.h>

EXEC SQL include sqlca;
EXEC SQL define FNAME_LEN 16;
int main()
{
    EXEC SQL begin declare section;
    char dbname[FNAME_LEN + 1];
    int total;
    int free;
    int use;
    int lock;
    int session;
  
    char servername[FNAME_LEN + 1];
    char dname[FNAME_LEN + 1];
    EXEC SQL end declare section;

    printf("Enter name of database:");
    gets(dbname);

    EXEC SQL connect to :dbname;

    if(SQLCODE == 0)
    {
        printf("Database %s is now open.\n",dbname);

        // servername
        EXEC SQL declare servername cursor for
        select dbsvrnm into :servername from sysmaster:syssqlhosts;

        // dbspace size
        EXEC SQL declare democursor cursor for
        select d.name, round(sum(c.chksize*c.pagesize)/1024,2),
        round(sum(c.nfree*c.pagesize)/1024,2),
        round((sum(c.chksize*c.pagesize) - sum(c.nfree*c.pagesize))/sum(c.chksize*c.pagesize) *100,2)
        into :dname, :total, :free, :use
        from sysmaster:syschunks c, sysmaster:sysdbspaces d
        where c.dbsnum = d.dbsnum group by d.name;

        // lock
        EXEC SQL declare lock cursor for
        select count(type) into :lock from sysmaster:syslocks where type like '%X';

        // session
        EXEC SQL declare session cursor for
        select count(*) into :session from sysmaster:sysuserthreads;

        EXEC SQL open democursor;
        for(;;)
        {
            EXEC SQL fetch democursor;
            if(sqlca.sqlcode != 0)
                break;

            EXEC SQL open servername;
            EXEC SQL fetch servername;

            if(sqlca.sqlcode != 0)
                break;
                printf("%s-%s\n",servername,dname);
                printf("total - %dKb\n",total);
                printf("free  - %dKb\n",free);
                printf("use - %d%%\n",use);

        }

        EXEC SQL open servername;
        EXEC SQL fetch servername;
        EXEC SQL open lock;
        EXEC SQL fetch lock;
        printf("[%s]Lock - %d\n",servername, lock);

        EXEC SQL open session;
        EXEC SQL fetch session;
        printf("[%s]Session - %d\n",servername, session);

    }

    else
        printf("Error %ld opening database\n",SQLCODE);
        EXEC SQL close democursor;
        EXEC SQL free democursor;
        EXEC SQL close servername;
        EXEC SQL free servername;
        EXEC SQL close lock;
        EXEC SQL free lock;
        EXEC SQL close session;
        EXEC SQL free session;

        exit(0);
        return 0;
}

두꺼운 부분이 db에 접속하는 건데.... db명으로는 잘 됩니다... 그런데...instance명으로 접속할려면 25550 에러가 납니다..

메뉴얼을 보니 '@서버명'  들어가는데...저는 왜 안될까요....

한번 봐주시면 고맙겠습니다..

이 글에 대한 댓글이 총 4건 있습니다.

Application의 첫번째문이 connect 문이 아니면 default로 환경병수에 정의된 INFORMIXSERVER로 접속하는 것으로 알고 있습니다.


connect문을 첫번째로 옮겨보는것이 어떨까요?


저도 esql/c에 대해서는 잘 모르지만 예전에 어디선가 본듯한 기억이으로 대답했습니다.


김선규(cbspd)님이 2008-03-04 13:28에 작성한 댓글입니다.

DB명을 입력값으로 넣을때

db명@instance명 으로 넣으면 될것 같은데요...

윤도경(openbbs)님이 2008-03-04 13:37에 작성한 댓글입니다.

김선규님의 답변중에 첫번째로 옮긴다는게 ....ㅠㅠ 변수 선언후 바로 컨넥트 하는데...ㅠㅠ

윤도경님의 답변중에.....db명@instance명 를 말하는게 아니고...그냥 instance명으로만 접속을 어떻게 

하는가 입니다....

지금 instance를 2개 올리고 하는 중인데...

접속할때 부터 instance의 명을 받아서 바로 결과치를 가져오는 걸 짜고 있는데..

단순히 DB명 or DB명@instance명 이렇게 하면 결과 치는 나오거든요...

그리고 2번째 instance의 값은 가져 오질 못하네요..ㅠㅠ

초보님이 2008-03-04 15:23에 작성한 댓글입니다. Edit

아마 님께서 생각하는 것은 multi-thread를 이용한 프로그램밍인것 같네요.
Devel에 해당 매뉴얼 올려 놨습니다.

윤도경(openbbs)님이 2008-03-04 19:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
2486[급] 쿼리 성능 향상에 대한 질문 [1]
이승훈
2008-03-06
7281
2485권한에 대해... [1]
최재환
2008-03-06
6761
2484instance 띄우기.... [2]
초보
2008-03-05
5820
2481db명으로 접속이 아닌 instance명으로 접속할려면...esql [4]
초보
2008-03-04
6837
2480linux instance 추가후..2번째 instance에 접속 방법 [1]
어흑
2008-03-03
5956
2479informix 파일 구합니다. [1]
남인식
2008-03-03
6141
2475밑에 외부연결 원인을 찾았습니다. [3]
nuxer
2008-02-28
6522
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v13.3으로 자료를 관리합니다