WEB开发网
开发学院软件开发VC Ado实现C++对象的存取 阅读

Ado实现C++对象的存取

 2010-02-19 20:33:35 来源:WEB开发网   
核心提示:四、CLine对象的读取void CTestAdoDlg::OnSelchangeListData(){ int iPos = m_List.GetCurSel(); if (iPos<0) return ; m_pSet->MoveFirst(); int i=0; while (i< iPos)

四、CLine对象的读取

void CTestAdoDlg::OnSelchangeListData()
{
   int iPos = m_List.GetCurSel();
   if (iPos<0) return ;
   m_pSet->MoveFirst();

   int i=0;
   while (i< iPos)
   {
     m_pSet->MoveNext();
     i++;
   }
   long lDataSize = m_pSet->GetFields()->GetItem(_variant_t("object"))->ActualSize;
   if(lDataSize <= 0) return;

   _variant_t varBLOB;
   VariantInit (&varBLOB);

   varBLOB = m_pSet->GetFields()->GetItem(_variant_t("object"))->GetChunk(lDataSize);
   if(varBLOB.vt == (VT_ARRAY | VT_UI1))
   {
     BYTE *pBuf = new BYTE[lDataSize + 1];
     if(pBuf)
     {
       SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
       SafeArrayUnaccessData (varBLOB.parray);

       CMemFile memfile;
       memfile.Attach(pBuf,lDataSize);
       memfile.SeekToBegin();
       CArchive ar(&memfile, CArchive::load);

       m_Line.Serialize(ar);
       ar.Close();
       memfile.Detach();
       CRect rc = GetRect(IDC_STATIC_RECT);
       InvalidateRect(rc);
     }
   }
   VariantClear (&varBLOB);
}

五、结束语

以上充分利用了串行化来实现c++对象保存到数据库,对以上方法稍做扩展对图象的保存到数据库,甚至多个图象文件保存到数据库和文件。

(很抱歉:我实在不想写文字说明了,如果有什么问题不清楚,跟我联系好了!!哎)

QQ:36201365

e-mail:ldh5118@sohu.com

本文配套源码

上一页  1 2 3 4 

Tags:Ado 实现 对象

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