环境: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。
以下是代码:(偷懒,然后把所以判断是否出错的语句都省略了)
CoInitialize(NULL);
ADODB::_ConnectionPtr pconnect=NULL;
pconnect.CreateInstance(__uuidof(ADODB::Connection));
_

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

被折叠的 条评论
为什么被折叠?



