strTabName是一个text类型的字段。
根据m_pRecordSet->Fields->Item[strTabName]->ActualSize取得字符的长度,通过GetChunk读取这么长的文本,但是取得的长度为什么比它实际的长度长?导致读取失败?
BOOL CAdoDB::SaveDataToFile(LPCTSTR strTabName, CFile* pFile)
{
try
{
long lSize = m_pRecordSet->Fields->Item[strTabName]->ActualSize;  //我现在调试的值是301
long lIsRead=0;
_variant_t varChunk;
const int iChunkSize=100;
while(lSize>0)
{
lIsRead=lSize>=iChunkSize? iChunkSize:lSize;
varChunk = m_pRecordSet->Fields->Item[strTabName]->GetChunk(lIsRead);//只读了201的长度就空了
pFile->Write((LPCTSTR)(_bstr_t)varChunk,lIsRead);
lSize-=lIsRead;
}
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
TRACE("Exception thrown for classes generated by #import");
TRACE("\tCode=%08lx\n",e.Error());
TRACE("\tCode meaning=%s\n",e.ErrorMessage());
TRACE("\tSource=%s\n",(LPCTSTR)bstrSource);
TRACE("\tDescrition=%s\n",(LPCTSTR)bstrDescription);
}
catch(...)
{
TRACE("*******Unhandled Exception*******");
}
return TRUE;
}