VC用ADO向Access里面存取bmp格式图片.该如何处理

VC用ADO向Access里面存取bmp格式图片..
具体如题...
贴上关键代码更佳...


------解决方案--------------------
困难比较多;
建议方法有两:
1、把图片文件读取为二进制形式保存,但是估计字段长度不够;如果使用其他数据库,也许可以;
2、把图片放在某个文件夹里,表里保存所放在的路径和文件名称;
------解决方案--------------------
在Access表中创建“OLE对象”字段,一般称为blob字段,用于保存图片:

存储:

C/C++ code

///假设m_pBMPBuffer指针指向一块长度为m_nFileLen的二进制数据,并且已经成功打开了记录集对象m_pRecordset///

char        *pBuf = m_pBMPBuffer;
VARIANT        varBLOB;
SAFEARRAY    *psa;
SAFEARRAYBOUND    rgsabound[1];

m_pRecordset->AddNew();                                              ///添加新记录
m_pRecordset->PutCollect("username",_variant_t("小李"));             ///为新记录填充username字段
m_pRecordset->PutCollect("old",_variant_t((long)28);                 ///填充old字段
if(pBuf)
{    
   rgsabound[0].lLbound = 0;
   rgsabound[0].cElements = m_nFileLen;
   psa = SafeArrayCreate(VT_UI1, 1, rgsabound);                      ///创建SAFEARRAY对象
   for (long i = 0; i < (long)m_nFileLen; i++)
      SafeArrayPutElement (psa, &i, pBuf++);                         ///将pBuf指向的二进制数据保存到SAFEARRAY对象psa中
   varBLOB.vt = VT_ARRAY | VT_UI1;                                   ///将varBLOB的类型设置为BYTE类型的数组
   varBLOB.parray = psa;                                             ///为varBLOB变量赋值
   m_pRecordset->GetFields()->GetItem("photo")->AppendChunk(varBLOB);///加入BLOB类型的数据
} 
m_pRecordset->Update();                                              ///保存我们的数据到库中