ADO写二进制数据时的注意事项

本文介绍了在VS2008 MFC环境中使用ADO连接SQL Server 2000和2005时,处理二进制数据的注意事项。在SQL Server 2000中,使用AppendChunk()函数必须设置Field对象的Attributes为adFldLong,否则会报错。而在SQL Server 2005中,这一错误不会出现,可能是默认设置的不同。另外,不使用AppendChunk()时,可以采用ADODB::Stream对象,但要注意 Variant 变量写入Stream的操作。
摘要由CSDN通过智能技术生成

环境:VS2008  MFC msado15.dll   SQL Server 2000   SQL Server 2005


操作SQL Server 2000时需要注意若要使用AppendChunk()函数,则必须要将Field对象的属性Attributes设为adFldLong,否则将会出现“在此环境中不允许操作”的错误;然而在操作SQL Server 2005时则在使用AppendChunk()不显式设置adFldLong时也不会出现上述的错误,也许是2005内默认adFldLong已设置了而2000的没有(这只是我的猜测);
若不使用AppendChunk(),可以使用流对象ADODB::Stream。使用Stream对象时,还需注意当把_variant_t 变量写入Stream内

pstream->Write(var);          //pstream为ADODB::_StreamPtr,    var为_variant_t
后需将流stream的位置设为起始位置0,
pstream->Position=0;

因为write后position是在stream的末尾,这样当你Read流Stream的内容时是从末尾读起,此时读到的内容就是NULL
pstream->Read(size);      //size为需读取的字节数
使用流Stream时无需考虑是2000还是2005。

以下是代码:(偷懒,然后把所以判断是否出错的语句都省略了)



                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值