VC用ADO向Access里面存取bmp格式图片.该如何处理
VC用ADO向Access里面存取bmp格式图片..
具体如题...
贴上关键代码更佳...
------解决方案--------------------
困难比较多;
建议方法有两:
1、把图片文件读取为二进制形式保存,但是估计字段长度不够;如果使用其他数据库,也许可以;
2、把图片放在某个文件夹里,表里保存所放在的路径和文件名称;
------解决方案--------------------
在Access表中创建“OLE对象”字段,一般称为blob字段,用于保存图片:
存储:
具体如题...
贴上关键代码更佳...
------解决方案--------------------
困难比较多;
建议方法有两:
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(); ///保存我们的数据到库中