如何从数据库中读取CLongBinary字段并将其写入CFile对象?

时间:2013-09-04 09:20:59

标签: c++ file-io mfc binaryfiles cfile

我使用 CRecordset 从我的SQL Server获取数据。一个表存储二进制文件(pdf,odt,...)。我的VisualStudio将列映射到 CLongBinary 字段。

如何从CLongBinary字段中读取和打开文件?

即时使用MFC的古代版本4.2 VisualStudio 6.0

1 个答案:

答案 0 :(得分:4)

做这样的事情。这只会给你一个想法。我还没有测试过代码。

CLongBinary myfield ;

... retrive myfield from database here


BYTE *dataptr = (BYTE*)GlobalLock(myfield.m_hData) ;

// now dataptr points to your raw data, and myfield.m_dwDataLength is the length of that data

CString tempname = ... create temporary filename somewhere
CFile myfile ;
myfile.Open(tempfilename, CFile::modeCreate|CFile::modeWrite);
myfile.Write(dataptr, myfield.m_dwDataLength) ,
myfile.Close() ;
GlobalUnlock(myfield.m_hData) ;

ShellExecute(NULL, _T("open"), tempfilename, NULL, NULL, SW_SHOW) ;