正在阅读:VC下ADO开发实践之二VC下ADO开发实践之二

2004-02-14 09:34 出处: 作者:王骏 责任编辑:pjl
三、具体步骤 3.1 BLOB数据的保存 BLOB类型的数据无法用普通的方式进行存储,我们需要使用AppendChunk函数,AppendChunk包含在Field对象中,原型如下: HRESULT AppendChunk (const _variant_t & Data ); 从函数原型中可以看到关键的问题是我们需把二进制数据赋值给VARIANT类型的变量,下面我们给出具体的代码并作简单的分析: ///假设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(); ///保存我们的数据到库中 至此我们的数据已经成功地保存到了数据库中,接下来我们所要做的工作便是将该数据提取出来,让我们继续吧!
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品