ODBC 中 CLongBinary 对象的访问问题
m_pSet 是一个CRecordSet的派生类指针
m_phtoto 是一个CLongBinary对象,与表中一存放二进制数据的列绑定,
希望能向数据库中添加一2102Byte大小的图片数据,尝试进行如下操作:
m_pSet->AddNew();
GlobalFree( m_pSet->m_photo.m_hData );
m_pSet->m_photo.m_hData = GlobalAlloc( GHND , 2102 );
LPSTR pStr = (LPSTR)GlobalLock( m_pSet->m_photo.m_hData );
fstream photofile;
photofile.open( "photo.bmp" , ios::in|ios::binary );
photofile.read( pStr , 2102 );
photofile.close();
m_pSet->Update();
GlobalUnlock(m_pSet->m_photo.m_hData);
但在数据库中未添加进任何数据,不过文件数据经验证的确已读入内存,还望各位大虾指点,多谢!!!!
问题点数:50、回复次数:2Top
1 楼shotgun79(炮炮龙)回复于 2005-08-01 20:57:50 得分 0
if(!pPicRs->IsOpen()) pPicRs->Open(CRecordset::snapshot);
if(!pPicRs->IsBOF()) pPicRs->MoveFirst();
pPicRs->AddNew();
pPicRs->m_Pic.m_dwDataLength = fileStatus.m_size;
HGLOBAL hGlobal = GlobalAlloc(GPTR, fileStatus.m_size);
pPicRs->m_Pic.m_hData = GlobalLock(hGlobal);
file.ReadHuge(pPicRs->m_Pic.m_hData,fileStatus.m_size);
pPicRs->m_PageID = pageID;
pPicRs->m_PicType = nPicType;
pPicRs->m_PicName = picName;
pPicRs->SetFieldDirty(&pPicRs->m_Pic);
pPicRs->SetFieldNull(&pPicRs->m_Pic, FALSE);
pPicRs->Update();
GlobalUnlock(hGlobal);
pPicRs->Close();
delete pPicRs;
我的一段代码,处理图片文件,其中fileStatus是CFileStatus对象。图片从文件系统中的图片取得Top
2 楼hisky1983()回复于 2005-08-03 12:31:14 得分 0
cimage c;
CFileStatus fileStatus;
file.GetStatus(fileStatus);
c.Open();
c.AddNew();
c.m_imagename=imagename;
c.m_projectname=projectname;
c.m_datatime=CTime::GetCurrentTime();
c.m_image.m_dwDataLength=fileStatus.m_size;
HGLOBAL hGlobal= GlobalAlloc(GPTR,fileStatus.m_size);//申请存放图像数据的空间。
c.m_image.m_hData = GlobalLock(hGlobal);
file.ReadHuge(c.m_image.m_hData,fileStatus.m_size);//向m_Image读图像数据。
c.SetFieldDirty(&c.m_image);//标志数据库已经修改;
c.SetFieldNull(&c.m_image,FALSE);//设置记录为NULL;
c.Update();//刷新数据库的记录
GlobalUnlock(hGlobal);
c.Close();
return TRUE;Top




