您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 衢州分类信息网,免费分类信息发布

C语言访问INFORMIX数据库

2024/4/8 12:19:50发布35次查看
informix数据库是ibm旗下的产品,其是一款关系数据库,目前在金融行业占有重要地位。使用c语言访问informix数据库的唯一方式是通
一、头文件
引入informix数据库的头文件时,可使用如下的方式:
exec sql include sqlca; 
exec sql include sqlda; 
exec sql include sqlhdr; 
exec sql include decimal; 
exec sql include locator; 
exec sql include varchar; 
exec sql include datetime; 
exec sql include sqlstype; 
exec sql include sqltypes; 
exec sql include sqlstype; 
二、宏定义
宏在宿主变量使用时,此宏定义可使用如下方式:
exec sql define sql_usrname_max_len 64;  /* user name max len */ 
exec sql define sql_passwd_max_len 64;    /* password max len */ 
exec sql define sql_svrname_max_len 64;  /* database name max len */ 
exec sql define sql_cnname_max_len 64;    /* connect name max len */ 
exec sql define sql_stmt_max_len 1024;    /* sql statement max len */ 
三、结构体定义
当sql语句中使用了结构体变量时,,那么此变量的类型结构体必须通过如下方式定义:
exec sql begin declare section; 
typedef struct 

    int id; 
    char name[32]; 
    char gender; 
    int age; 
    char brf[256]; 
}dbstudent_t; 
exec sql end declare section; 
如:
int db_ifx_update(...) 

exec sql begin declare section; 
    dbstudent_t dbstudent; 
exec sql end declare section;
...
exec sql update set *=(:dbstudent) where; 

四、变量定义
宿主变量的必须通过如下方式进行定义:
exec sql begin declare section; 
    char svrname[sql_svrname_max_len], /* server name */ 
        usrname[sql_usrname_max_len], /* user name */ 
        passwd[sql_passwd_max_len],  /* passwd */ 
        cnname[sql_cnname_max_len];  /* connect name */ 
exec sql end declare section; 
如:
int db_ifx_open(...) 

exec sql begin declare section; 
    char svrname[sql_svrname_max_len], /* server name */ 
        usrname[sql_usrname_max_len], /* user name */ 
        passwd[sql_passwd_max_len],  /* passwd */ 
        cnname[sql_cnname_max_len];  /* connect name */ 
exec sql end declare section;
...
exec sql connect to :svrname as :cnname user :usrname using :passwd; 
    ... 

五、错误信息
每执行一次sql语句后,错误码存放在全局变量sqlca.sqlcode中,可通过rgetmsg()获取错误信息。如:
int db_ifx_commit(...) 

    exec sql commit work; 
    if(sqlca.sqlcode     { 
        rgetmsg(sqlca.sqlcode, errmsg, sizeof(errmsg)); 
        fprintf(stdout, %s, errmsg); 
        return -1; 
    } 
    ... 
}
衢州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录