存储过程有OUTPUT参数又要返加记录集,为什么只要我取记录集就不能取返回的OUTPUT参数 m_pCmd->Execute(NULL, NULL, lOptions);如果这样执行可以取得返回参数。m_pReco = m_pCmd->Execute(NULL, NULL, lOptions);如果这样就什么都得不到。为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是代码_ConnectionPtr pConn; _RecordsetPtr pReco; _CommandPtr pCmd; _ParameterPtr pParam1, pParam2, pParam3, pParam4, pParam5; try { pConn.CreateInstance("ADODB.Connection"); pConn->Open("Provider=SQLOLEDB;SERVER=lenovo;DATABASE=Pubs;UID=sa;PWD=", "", "", -1); //pReco.CreateInstance("ADODB.Recordset"); pCmd.CreateInstance(__uuidof(Command)); pCmd->ActiveConnection = pConn; pCmd->CommandType = adCmdStoredProc; pCmd->CommandText = "TestParam"; pParam5 = pCmd->CreateParameter(_bstr_t("Return"), adInteger, adParamReturnValue, 2); pCmd->Parameters->Append(pParam5); pParam3 = pCmd->CreateParameter(_bstr_t("@nParam3"), adInteger, adParamOutput, 4); pCmd->Parameters->Append((IDispatch*)(pParam3)); pParam4 = pCmd->CreateParameter(_bstr_t("Output2"), adVarChar, adParamOutput, 20); pCmd->Parameters->Append(pParam4); pParam1 = pCmd->CreateParameter(_bstr_t("Input1"), adInteger, adParamInput, 4); pCmd->Parameters->Append(pParam1); pParam2 = pCmd->CreateParameter(_bstr_t("Input2"), adVarChar, adParamInput, 20); pCmd->Parameters->Append(pParam2); pParam2->Value = _variant_t(m_strInput2); pParam1->Value = _variant_t((double)m_nInput1); /*pReco = */pCmd->Execute(NULL, NULL, adCmdStoredProc); m_nOutput3 = (pParam3->Value).intVal; m_nRetValue = (pParam5->Value).intVal; m_strOutput4 = (char*)_bstr_t(pParam4->Value); UpdateData(FALSE); } catch(_com_error e) // 捕捉异常 { _bstr_t bstrSource(e.Source()); _bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ") + _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ") + _bstr_t(e.Description()); MessageBox(bs, bstrSource); } sendmessage出错 如何自动登录网页并提交表单 急!检测数据库记录数问题!(在线等!) 如何设置程序的背景色! ActiveX控件中如何知道现在处于编辑状态还是程序运行状态 我需要帮助 请教这样的代码是什么意思,100分,在线等候。 用dao 无法进行查询select sum(count) from table,getfiledvalue()恒为null 我想编一个局域网的QQ,请问大侠,有没有什么如何做的建议,或有什么地方有关于socket的书 关于IDispatch,问了好久了,难道每人知道吗? 怎么使菜单列表中的菜单命令随条件变亮变灰? 求最小二乘法的算法
_ConnectionPtr pConn;
_RecordsetPtr pReco;
_CommandPtr pCmd;
_ParameterPtr pParam1, pParam2, pParam3, pParam4, pParam5;
try
{
pConn.CreateInstance("ADODB.Connection");
pConn->Open("Provider=SQLOLEDB;SERVER=lenovo;DATABASE=Pubs;UID=sa;PWD=",
"", "", -1);
//pReco.CreateInstance("ADODB.Recordset");
pCmd.CreateInstance(__uuidof(Command)); pCmd->ActiveConnection = pConn;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText = "TestParam";
pParam5 = pCmd->CreateParameter(_bstr_t("Return"), adInteger, adParamReturnValue, 2);
pCmd->Parameters->Append(pParam5); pParam3 = pCmd->CreateParameter(_bstr_t("@nParam3"), adInteger, adParamOutput, 4);
pCmd->Parameters->Append((IDispatch*)(pParam3));
pParam4 = pCmd->CreateParameter(_bstr_t("Output2"), adVarChar, adParamOutput, 20);
pCmd->Parameters->Append(pParam4); pParam1 = pCmd->CreateParameter(_bstr_t("Input1"), adInteger, adParamInput, 4);
pCmd->Parameters->Append(pParam1);
pParam2 = pCmd->CreateParameter(_bstr_t("Input2"), adVarChar, adParamInput, 20);
pCmd->Parameters->Append(pParam2);
pParam2->Value = _variant_t(m_strInput2);
pParam1->Value = _variant_t((double)m_nInput1); /*pReco = */pCmd->Execute(NULL, NULL, adCmdStoredProc); m_nOutput3 = (pParam3->Value).intVal;
m_nRetValue = (pParam5->Value).intVal;
m_strOutput4 = (char*)_bstr_t(pParam4->Value); UpdateData(FALSE);
}
catch(_com_error e) // 捕捉异常
{
_bstr_t bstrSource(e.Source());
_bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ")
+ _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ")
+ _bstr_t(e.Description());
MessageBox(bs, bstrSource);
}