问题1:使用记录集处理时,没有用update为什么服务器数据库中的数据也更改了?
问题2:而且如果使用update之后还会报错:'BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。请问是什么原因?
代码如下:
//1、创建记录集
HRESULT hr;
_RecordsetPtr p_Recordset;
hr = p_Recordset.CreateInstance(_uuidof(Recordset));
if (FAILED(hr))
{
error_ = _T("创建记录集失败");
CGlobal::WriteLog(error_);
return FALSE;
}
//2、调用open方法打开一个记录集
try
{
CString StrSQL;
StrSQL = _T("SELECT * FROM FCZL2017_temp");
hr = p_Recordset->Open(_variant_t(StrSQL),p_Connection_.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
if (SUCCEEDED(hr))
{
//进行遍历操作
while(!p_Recordset->GetadoEof())
{
CString sPriorityNo;
sPriorityNo = p_Recordset->GetCollect("优先权号").bstrVal;
if (sPriorityNo.Left(2) == _T("WO"))
{
sPriorityNo.Delete(0,2);
}
p_Recordset->PutCollect(_variant_t("优先权号"),(_variant_t)sPriorityNo);
p_Recordset->MoveNext();
}
//p_Recordset->Update();
}
else
{
error_ = _T("打开记录集失败");
CGlobal::WriteLog(error_);
return FALSE;
}
}
catch (_com_error& e)
{
_bstr_t bStrSource(e.Source());
_bstr_t bStrDescription(e.Description());
error_ = (LPCSTR)bStrDescription;
CGlobal::WriteLog(error_);
return FALSE;
}
//long tem = p_Recordset->GetRecordCount();
//关闭记录集
p_Recordset->Close();
p_Recordset = NULL;
顺便问一下_variant_t变量如何判断是否为空谢谢