_RecordsetPtr sp_rs(__uuidof(Recordset));
sp_rs.AddRef();
sp_rs->Fields->Append("column1",adBSTR,20,adFldIsNullable,vtMissing); //增加字段
sp_rs->Open(vtMissing,vtMissing,adOpenDynamic,adLockOptimistic,-1); //无连接
sp_rs->AddNew(); //插入记录
sp_rs->Fields->GetItem("column1")->PutValue("aaaa"); //赋值草草写的一段代码,大概意思没错。
sp_rs.AddRef();
sp_rs->Fields->Append("column1",adBSTR,20,adFldIsNullable,vtMissing); //增加字段
sp_rs->Open(vtMissing,vtMissing,adOpenDynamic,adLockOptimistic,-1); //无连接
sp_rs->AddNew(); //插入记录
sp_rs->Fields->GetItem("column1")->PutValue("aaaa"); //赋值草草写的一段代码,大概意思没错。
STDMETHODIMP CSimpleAdo::GetRecordset(_Recordset **pRecordset, BSTR bstrSQL)
{
_RecordsetPtr pSet;
try{
_variant_t varTemp;
// add a record set
pSet.CreateInstance(__uuidof(Recordset));
pSet->Fields->Append("Name",adVarChar,255,adFldIsNullable,varTemp);
pSet->Fields->Append("Title",adVarChar,255,adFldIsNullable,varTemp);
pSet->Fields->Append("Address",adVarChar,255,adFldIsNullable,varTemp);
pSet->Fields->Append("Phone",adVarChar,255,adFldIsNullable,varTemp);
pSet->Fields->Append("Employee ID",adVarChar,255,adFldIsNullable,varTemp);
pSet->CursorLocation = adUseClient;
pSet->Open( _variant_t(DISP_E_PARAMNOTFOUND, VT_ERROR),
_variant_t(DISP_E_PARAMNOTFOUND, VT_ERROR),
adOpenStatic,
adLockBatchOptimistic,
adCmdUnspecified);
pSet->AddNew(); // fill in the recordset
pSet->PutCollect(_variant_t("Name"), _variant_t("GTEC"));
pSet->PutCollect(_variant_t("Title"), _variant_t("Support Center"));
pSet->PutCollect(_variant_t("Address"), _variant_t("ShangHai"));
pSet->PutCollect(_variant_t("Phone"), _variant_t("02164692288"));
pSet->PutCollect(_variant_t("Employee ID"), _variant_t("12345")); pSet->Update();
}
catch(const _com_error &e)
{
// throw;
return e.WCodeToHRESULT (e.WCode ());
}
*pRecordset=pSet;
pSet->AddRef ();
return S_OK;
}
微软亚洲技术中心 VC技术支持本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款 (http://www.csdn.net/microsoft/terms.shtm)。
如果我用 *pRecordet = pSet.Detach()
还用pSet->addref() 吗?
detach 之后,pset 不会release 接口了吧