免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2401 | 回复: 0
打印 上一主题 下一主题

【求助】ctlib 访问sybase数据库问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-10 15:30 |只看该作者 |倒序浏览
我数据库信息如下:
Adaptive Server Enterprise/15.0.3/EBF 16374/P/x86_64/Enterprise Linux/ase1503/2669/64-bit/FBO/Wed Nov 12 16:52:49 2008

用ct_lib编写程序访问数据
程序位64位
遇到一个很怪的情况:
连接,执行sql都正常,使用ct_describe( cmd, i, &c_info );时
返回成功,但是c_info里的CS_DATAFMT结构是错位的

从sybase客户端的头文件里看
#if defined( __alpha) || defined(SYB_LP64) || defined(SYB_LLP64) || defined(_AIX)
typedef int             CS_INT;
typedef int             CS_RETCODE;
typedef int             CS_BOOL;
typedef unsigned int    CS_UINT;
#else
typedef long            CS_INT;
typedef long            CS_RETCODE;
typedef long            CS_BOOL;
typedef unsigned long   CS_UINT;
#endif

在64位环境下,CS_INT是long,长度应该是8
但是用gdb看获取的内存,c_info里的数据,每一个CS_INT类型的字段长度都是4,而不是64位客户端库里的8
自定义一个结构
typedef struct
{
    char name[256];
    int namelen;
    int datatype;
    int format;
    int maxlength;
    int scale;
    int precision;
    int status;
    int count;
    int usertype;
    void *locale
}DATA_FMT;
即可处理正确


有大侠知道什么机关么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP