使用ole db模板,如何写blob大字段
通过ado的实现我知道了.
但是olb db中通过ISequentialStream* m_FileBuffer指针实现读功能的比较多,实现写功能的例子没见到,希望高手指点,再就是有了blob大字段,记录用一般的方法怎么删不了(olb db+sql server)
下面是读的例子:(不用模板的写功能msdn上有方法,但是用了模板怎么完成呢?)
向导生成模板:
class CdboFANGANAPPAccessor
{
public:
SequentialStream* m_FileBuffer;
BEGIN_ACCESSOR_MAP(CdboFANGANAPPAccessor,2)
BEGIN_ACCESSOR(0, true)
COLUMN_ENTRY(1, m_guid)
END_ACCESSOR()
BEGIN_ACCESSOR(1, true)
BLOB_ENTRY(7, IID_ISequentialStream, STGM_READ, m_FileBuffer)
END_ACCESSOR()
END_ACCESSOR_MAP()
//将库中image字段内容读出写入一个文件中;
CdboFANGANAPP set;
if(FAILED(set.Open()))
return ;
ULONG cb;
char *m_pFileBuffer=NULL;
while (set.MoveNext()==S_OK)
{
CString docFilePath = toSaveDocDir;
CFile file;
if( !file.Open(docFilePath, CFile::modeCreate|CFile::modeWrite))
return ;
m_pFileBuffer = new char[m_nFileLen + 1];
if(!m_pFileBuffer)
return ;
do
{
set.m_FileBuffer->Read(m_pFileBuffer, m_nFileLen, &cb);
// Do something with the buffer
} while (cb > 0);
file.WriteHuge(m_pFileBuffer,m_nFileLen);
file.Close();
}
set.m_FileBuffer->Release();
set.Close();
//请问如何set.m_FileBuffer->Write(m_pFileBuffer, m_nFileLen, &cb)功能,
总是报错,因为set.m_FileBuffer总为NULL;
//set.Delete(),删不掉记录,为什么?
谢谢大虾们.