ACCESS数据库中TEXT字段的真实长度

解决了一个困扰我两个多小时的问题,居然是由于对ACCESS中的TEXT字段的长度没有弄清楚导致的。

为客户做的一个用ADO.NET封装的数据访问类, 在析构时居然发生了非法存取的错误,初步分析应该是内存越界导致的。仔细查了几遍代码后,发现应该没有问题。然后多次测试后发现,当使用Oracle的链接时不会出错,于是开始STEP BY STEP, 在走了几条数据的时候突然发现,ACCESS数据库中长度定义为200Byte的字段,实际字段值的长度居然是208Byte.问题到这里的时候就恍然大悟了,原来ACCESS中的TEXT字段长度指的是字符的长度,由于该记录中有8个全角字符,所以真实的长度就是208Byte了。

但奇怪的是,我使用的是Oledb的GetSchemaTable()得到的该字段的长度是200,不知道有没有别的办法能得到精确的值, 不过这是使用C++/CLI进行混合编程才需要考虑的问题,我能想到的解决办法就是,将得到的字段长度*2以后,作为要分配内存的实际长度。修改后再测,一切OK。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值