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

数据库 专栏收录该内容
2 篇文章 0 订阅

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

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

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

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值