开启otl的64位长整数支持
来源:互联网 发布:网络架构师英语怎么说 编辑:程序博客网 时间:2024/05/01 08:12
要开启OTL的64位长整数支持,必须先定义宏
#define OTL_BIGINT __int64 // VC++, Borland C++
或者
#define OTL_BIGINT long long // GNU C++
同时,因为OTL只是一个头文件,具体的64位长整数支持还得靠底层,对于底层驱动本身就支持64位长整数的情况,就不需要定义其他宏了,而对于那些底层驱动不支持64位长整数的情况,例如OCI版本小于11.2或是ODBC本身不支持64位整数,则需要额外定义宏
#if defined(__GNUC__) // GNU C++#include <stdlib.h>#define OTL_BIGINT long long#define OTL_STR_TO_BIGINT(str,n) \{ \ n=strtoll(str,0,10); \}#define OTL_BIGINT_TO_STR(n,str) \{ \ sprintf(str,"%lld",n); \}#endif
或是(WINDOWS平台)
#define OTL_BIGINT __int64#define OTL_STR_TO_BIGINT(str,n) \{ \ n=_atoi64(str); \}#define OTL_BIGINT_TO_STR(n,str) \{ \ _i64toa(n,str,10); \}
原理就是通过宏把64位长整数转换成字符串存储在数据库里,取的时候再把字符串转换成64位长整数
在LP64平台上使用64位的OCI时,可以考虑定义宏
#define OTL_ORA_MAP_BIGINT_TO_LONG
这个比定义宏OTL_STR_TO_BIGINT和OTL_BIGINT_TO_STR执行效率更好
总之,就一句话,要想开启OTL的64位长整数,则必须定义宏OTL_BIGINT,如果底层驱动是OCI11.2以前的版本或是ODBC本身不支持64位长整数(这个情况比较少见),则还需要定义宏OTL_STR_TO_BIGINT和OTL_BIGINT_TO_STR
参考资料:http://otl.sourceforge.net/otl3_compile.htm(要翻墙才能打开,不知道为啥这个网站会被封掉)
- 开启otl的64位长整数支持
- C 语言(C99) 对 64 位整数类型的支持
- C 语言(C99) 对 64 位整数类型的支持
- C 语言(C99) 对 64 位整数类型的支持
- 在64位Windows的IIS上开启32位程序支持
- 在64位Windows的IIS上开启32位程序支持(转)
- 在64位Windows的IIS上开启32位程序支持
- 2.2: 随机生成一个n bit位的长整数。
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- 2.2: 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数。
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- 随机生成一个n bit位的长整数
- struts实现零配置
- 三星平台 android audio 架构探讨点滴积累之一
- 上下文切换
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
- DG broker使用dgmgrl配置及start fast failover
- 开启otl的64位长整数支持
- 树(二)二叉树递归和非递归遍历
- 企业如何通过软件实施汽车配件管理
- java resteasy restful webservice教程(六):实现文件下载功能实例文章来源:爱上123 原文地址:http://www.ishang123.com/jishubowen/
- Hibernate Tools的使用
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest
- 深入探讨 Java 类加载器
- 上一篇关于android通知栏点击回不到应用程序的问题进一步研究
- CombBox 拓展 Tag 属性