WEB开发网
开发学院软件开发VC 使用ADO实现BLOB数据的存取-ADO开发实践之二 阅读

使用ADO实现BLOB数据的存取-ADO开发实践之二

 2008-02-26 20:26:26 来源:WEB开发网   
核心提示:3.2 BLOB数据的读取对应于保存数据时我们所使用的AppendChunk函数,读取数据应该使用GetChunk函数,GetChunk的原型如下:_variant_t GetChunk (long Length );给出数据的长度后GetChunk将返回包含数据的VARIANT类型变量,然后我们可以利用SafeArr

3.2 BLOB数据的读取

对应于保存数据时我们所使用的AppendChunk函数,读取数据应该使用GetChunk函数,GetChunk的原型如下:

_variant_t GetChunk (long Length );

给出数据的长度后GetChunk将返回包含数据的VARIANT类型变量,然后我们可以利用SafeArrayAccessData函数得到VARIANT变量中指向数据的char *类型的指针,以方便我们的处理,具体代码如下:

long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;///得到数据的长度
if(lDataSize > 0)
{
  _variant_t varBLOB;
  varBLOB = m_pRecordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);
  if(varBLOB.vt == (VT_ARRAY | VT_UI1))                 ///判断数据类型是否正确
  {
    char *pBuf = NULL;
    SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);       ///得到指向数据的指针
    /*****在这里我们可以对pBuf中的数据进行处理*****/
    SafeArrayUnaccessData (varBLOB.parray);
  }
}

以上我们成功实现了BLOB数据在数据库中的存取,为了让大家有现成的例子可以参考,本文提供了示例工程,在示例工程中我们在数据库中保存图像数据,并可以对这些图像进行浏览、修改,该例子还涉及到如何用char *指向的BMP文件数据创建BITMAP对象然后显示出来。

四、后记

在上一篇文章《ADO第一次亲密接触》发表后,得到了广大网友的大力支持和鼓励,还指正了文章中的错误之处,这些都促使我继续写下了这篇文章,在此向这些网友表示衷心的感谢,对于本文的错误之处也希望批评指正!

上一页  1 2 

Tags:使用 ADO 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接