设为首页 加入收藏

TOP

C语言访问INFORMIX数据库 ― SQLDA使用(二)
2014-11-23 23:24:24 来源: 作者: 【 】 浏览:2
Tags:语言 访问 INFORMIX 数据库 SQLDA 使用
AL8:
{
sqlvar->sqltype = CINT8TYPE;
break;
}
case SQLBIGSERIAL:
case SQLINFXBIGINT:
{
sqlvar->sqltype = CBIGINTTYPE;
break;
}
case SQLDECIMAL:
{
sqlvar->sqltype = CDECIMALTYPE;
break;
}
case SQLSMFLOAT:
{
sqlvar->sqltype = CFLOATTYPE;
break;
}
case SQLFLOAT:
{
sqlvar->sqltype = CDOUBLETYPE;
break;
}
case SQLCHAR:
{
sqlvar->sqltype = CCHARTYPE;
break;
}
case SQLNCHAR:
{
sqlvar->sqltype = CFIXCHARTYPE;
break;
}
case SQLVCHAR:
case SQLNVCHAR:
{
sqlvar->sqltype = CVCHARTYPE;
break;
}
case SQLLVARCHAR:
{
sqlvar->sqltype = CLVCHARTYPE;
break;
}
case SQLMONEY:
{
sqlvar->sqltype = CMONEYTYPE;
break;
}
case SQLINTERVAL:
{
sqlvar->sqltype = CINVTYPE;
break;
}
case SQLDATE:
{
sqlvar->sqltype = CDATETYPE;
break;
}
case SQLDTIME:
{
sqlvar->sqltype = CDTIMETYPE;
break;
}
case SQLROW:
{
sqlvar->sqltype = CROWTYPE;
break;
}
case SQLSET:
case SQLLIST:
case SQLMULTISET:
case SQLCOLLECTION:
{
sqlvar->sqltype = CCOLLTYPE;
break;
}
case SQLTEXT:
case SQLBYTES:
{
sqlvar->sqltype = CLOCATORTYPE;
break;
}
default: /* Other data type */
{
return -1;
}
}

return 0;
}
代码说明:
1. 数据类型的转换对应关系,请参考:http://blog.csdn.net/royalapex/article/details/8205654

代码段四:

[cpp]
/* 初始化sqldata数据空间 */
int db_ifx_init_sqldata(db_ifx_cntx_t *context, struct sqlvar_struct *sqlvar, int alloc_num)
{
char errmsg[DB_ERR_MSG_MAX_LEN] = {0};
int ret = 0, alloc_size = 0;

/* 1. 为指示符变量申请空间 */
sqlvar->sqlind = (short *)calloc(alloc_num, sizeof(short));
if(NULL == sqlvar->sqlind)
{
return -1;
}

/* 2. 为存放非TEXT 和BLOB的数据类型的sqldata申请空间.
注意: 申请的地址是(char *),在输出数据时,要按照相应的数据类型做转换 */
if(CLOCATORTYPE != sqlvar->sqltype)
{
alloc_size = alloc_num*sqlvar->sqllen;
if(sqlvar->sqllen > context->convert_size)
{
context->convert_size = sqlvar->sqllen;
}

sqlvar->sqldata = (char*)calloc(1, alloc_size);
if(NULL == sqlvar->sqldata)
{
return -1;
}
return 0;
}

/* 3. 为TEXT和BLOB的数据类型的sqldata申请空间 */
return db_ifx_alloc_loc(context, sqlvar, alloc_num);
}
代码段五:
[cpp]
/* 申请loc_t类型的数据空间 */
int db_ifx_alloc_loc(db_ifx_cntx_t *context, struct sqlvar_struct *sqlvar, int alloc_num)
{
char errmsg[DB_ERR_MSG_MAX_LEN] = {0};
int idx = 0, alloc_size = 0;
loc_t *loc = NULL;

alloc_size = alloc_num*sqlvar->sqllen;
if(sqlvar->sqllen > context->convert_size)
{
context->conve

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇防止对特定的函数下CC断点 下一篇C语言连接 Access 数据库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: