我的意思是想实现提取指定的记录,即把指定ID号码的图片出数据库放到缓冲区
让指针指向我所要的记录.
把它过滤出来,可是Recordset指针总是指向第一条,不知道错误在哪里?
strID.Format("%ld",lPicID); //开始过滤数据.
CString strFilter;
strFilter="TXBH = " + strID;//FieldName是ID对应的字段名,
//strID是字符串类型的ID号
pRecordset->Filter =(_variant_t)(_bstr_t)strFilter;//开始过滤
pRecordset->Filter =""; //过滤完成
if((pRecordset->adoEOF)&&(pRecordset->BOF))//需要加一条出错控制语句.判断记录条数是否为0.
{
return NULL;
}
long lDataSize = pRecordset->GetFields()->GetItem("CSTX")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = pRecordset->GetFields()->GetItem("CSTX")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(pBMPBuffer = new char[lDataSize+1]) ///重新分配必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBMPBuffer,pBuf,lDataSize);///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
dwFileLen = lDataSize;
hPhotoBitmap = BufferToHBITMAP();
return hPhotoBitmap;
让指针指向我所要的记录.
把它过滤出来,可是Recordset指针总是指向第一条,不知道错误在哪里?
strID.Format("%ld",lPicID); //开始过滤数据.
CString strFilter;
strFilter="TXBH = " + strID;//FieldName是ID对应的字段名,
//strID是字符串类型的ID号
pRecordset->Filter =(_variant_t)(_bstr_t)strFilter;//开始过滤
pRecordset->Filter =""; //过滤完成
if((pRecordset->adoEOF)&&(pRecordset->BOF))//需要加一条出错控制语句.判断记录条数是否为0.
{
return NULL;
}
long lDataSize = pRecordset->GetFields()->GetItem("CSTX")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = pRecordset->GetFields()->GetItem("CSTX")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(pBMPBuffer = new char[lDataSize+1]) ///重新分配必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBMPBuffer,pBuf,lDataSize);///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
dwFileLen = lDataSize;
hPhotoBitmap = BufferToHBITMAP();
return hPhotoBitmap;
pRecordset->Filter ="";
等同于没有过滤,一般过滤之后Requery一下,或者将记录集close之后,再open。这样,记录集就是你想要的记录集了。最后不要忘记执行 pRecordset->Filter =""; 语句。