日期:2014-05-16 浏览次数:20480 次
一、头文件
引入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 id='10001';
}
四、变量定义
宿主变量的必须通过如下方式进行定义:
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 < 0)
    {
        rgetmsg(sqlca.sqlcode, errmsg, sizeof(errmsg));
        fprintf(stdout, "%s", errmsg);
        return -1;
    }
    ...
}