2

im using a CRecordset to get data from my SQL Server. One table stores a binary file (pdf, odt, ...). My VisualStudio maps the columns to a CLongBinary field.

How can I read and open the file from the CLongBinary field?

im using some ancient version 4.2 of MFC, VisualStudio 6.0

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
Jakob
  • 778
  • 3
  • 9
  • 25

1 Answers1

4

Do something like this. This will just give you an idea. I haven't tested the code.

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) ;
Jabberwocky
  • 48,281
  • 17
  • 65
  • 115