VC中使用ADO调用存储过程实现方法
2008-11-12 19:26:39 来源:WEB开发网在这里,有一点要注意的是
VretVal = pCmd->Parameters->GetItem(short(4))->Value;
这里的4,就是哪个output参数的index,就是我在2中说的参数的顺序
这里使用了Refresh,这是一个很重要的函数,我将在下面介绍一下它,我要先贴出另一种,不使用Refresh的办法,
5 .使用非Refresh的方法来调用
先定义变量
_CommandPtr pCmd = NULL;
_RecordsetPtr pRecordset = NULL;
_ParameterPtr retParam = NULL;
_ParameterPtr inParam1 = NULL;
_ParameterPtr inParam2 = NULL;
_ParameterPtr outParam1 = NULL;
_ParameterPtr outParam2 = NULL;
初试化
pCmd.CreateInstance(__uuidof(Command));
pRecordset.CreateInstance(_uuidof(Recordset));
retParam.CreateInstance(__uuidof(Parameter));
//其他的ParameterPtr 也初试化
pCmd->ActiveConnection = pConn;
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText=_bstr_t(_T("sp_1")); //SP Name
retParam = pCmd ->CreateParameter(_bstr_t("Return"), adInteger,
adParamReturnValue,
sizeof(int));
pCmd->Parameters->Append(retParam);
inParam1 = pCmd ->CreateParameter(_bstr_t("InParam1"),
adInteger,
adParamInput,
sizeof(int));
inParam1->Value = _variant_t(3);
pCmd->Parameters->Append(inParam1);
inParam2 = pCmd ->CreateParameter(_bstr_t("InParam2"),
adChar,
adParamInput,[Page]
10);
inParam2->Value = _variant_t(_T("DD1"));
pCmd->Parameters->Append(inParam2);
outParam1 = pCmd ->CreateParameter(_bstr_t("OutParam1"),
adInteger,
adParamOutput,
sizeof(int));
pCmd->Parameters->Append(outParam1);
outParam2 = pCmd ->CreateParameter(_bstr_t("OutParam2"),
adChar,
adParamOutput,
10);
pCmd->Parameters->Append(outParam2);
这里不用refresh的办法,是用Parameter来,这里要注意的是,这个add的顺序要和参数的index顺序要一致
更多精彩
赞助商链接