VC + ODBC 数据库的多行数据更新解决办法

VC + ODBC 数据库的多行数据更新
数据库表中字段如下

PlateOrderID,PlateData.......


其中ID为主键,且自动递增,DATA是BLOB字段,


我现在向数据库中写同一个数据多次,DATA也是一样的,没有问题

但是在更新时,却报告是多行数据更新,

在更新时已经加了过滤条件,只有一条记录被选出,然后进行Update,


CString strSQL = "";
 strSQL = "Select PlateMaterial,PlateThickness,PlateNum,";
strSQL += "PartNum,UsedPercent,MainboardID,MainboardType,SurplusNum,";
strSQL += "PlateType,ModifyID,PlateData from MMS_BCPlate";

CString strPlateID = "";
strPlateID.Format("%ld",lPlateID);

CString strFilter = "";
strFilter = "PlateOrderID = '";
strFilter += strPlateID;
strFilter += "'";

CMyRecordset *pMyRecordset = ::theApp.m_cDBOperate.CreateMyRecordsetAndOpen(strSQL,
NULL,
strFilter
);

if( pMyRecordset == NULL )
return FALSE;

  //这里只有1条记录,因为是已主键ID为过滤条件

try
{
pMyRecordset->MoveFirst();
pMyRecordset->Edit();

//将套料板数据写入数据库
void *pLongBinaryVar = pMyRecordset->GetFieldVariable((UINT)10);
ASSERT(pLongBinaryVar != NULL);
CLongBinary *pLBvar = (CLongBinary *)pLongBinaryVar;

//删除原有数据,保证不内存泄漏
if( pLBvar->m_hData != NULL )
{
::GlobalFree(pLBvar->m_hData);
pLBvar->m_hData = NULL;
pLBvar->m_dwDataLength = 0;
}

if( ::theApp.m_cDBOperate.CopyLongBinary(pLBvar,pLongBinary))
{
pMyRecordset->SetFieldValue(0,(void *)(&strMaterial) , BIND_SQL_TEXT);
pMyRecordset->SetFieldValue(1,(void *)(&strThickness) , BIND_SQL_TEXT);
pMyRecordset->SetFieldValue(2,(void *)(&nPlateNum) , BIND_SQL_INT );
pMyRecordset->SetFieldValue(3,(void *)(&nPartNum) , BIND_SQL_INT );
pMyRecordset->SetFieldValue(4,(void *)(&strPercent) , BIND_SQL_TEXT);
pMyRecordset->SetFieldValue(5,(void *)(&lMatID) , BIND_SQL_LONG);
pMyRecordset->SetFieldValue(6,(void *)(&nType) , BIND_SQL_BOOL);
pMyRecordset->SetFieldValue(7,(void *)(&nSurplusNum) , BIND_SQL_BYTE);
pMyRecordset->SetFieldValue(8,(void *)(&bSurplus) , BIND_SQL_INT );
pMyRecordset->SetFieldValue(9,(void *)(&strModify) , BIND_SQL_TEXT); 

pMyRecordset->SetFieldDirty(pLBvar);
pMyRecordset->SetFieldNull(pLBvar,FALSE);
pMyRecordset->Update();
::theApp.m_cDBOperate.DeleteMyRecordset(&pMyRecordset);
delete pLongBinary;
pLongBinary = NULL;
}
else
{
  AfxMessageBox("套料板数据内存未能拷贝!\n");
::theApp.m_cDBOperate.DeleteMyRecordset(&pMyRecordset);
delete pLongBinary;
pLongBinary = NULL;
return FALSE;
}
}
catch(CException *e)
{
e->ReportError();
e->Delete();
::theApp.m_cDBOperate.DeleteMyRecordset(&pMyRecordset);
if( pLongBinary != NULL )
{
delete pLongBinary;
pLongBinary = NULL;
}
return FALSE;
}

------解决方案--------------------
CString strSQL = ""; 
 strSQL = "Select PlateOrderID,PlateMaterial,PlateThickness,PlateNum,"; 
strSQL += "PartNum,UsedPercent,MainboardID,MainboardType,SurplusNum,"; 
strSQL += "PlateType,ModifyID,PlateData from MMS_BCPlate"; 


应该这样写就OK了。