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)
{
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
本文配套源码
更多精彩
赞助商链接