//执行插入存储过程
CString strOperator="0906";
_CommandPtr cmmd;
HRESULT hr=cmmd.CreateInstance(__uuidof(Command));
if (FAILED(hr))
AfxMessageBox("创建_CommandPtr对象失败 ^ O ^ ");
else
{
_ParameterPtr param;
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strThingsKind1.GetLength()+1,_variant_t(m_strThingsKind1));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strName.GetLength()+1,_variant_t(m_strName));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strModel.GetLength()+1,_variant_t(m_strModel));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strCompany.GetLength()+1,_variant_t(m_strCompany));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strPhone.GetLength()+1,_variant_t(m_strPhone));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strNet.GetLength()+1,_variant_t(m_strNet));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,strOperator.GetLength()+1,_variant_t(strOperator));
cmmd->Parameters->Append(param); param = cmmd->CreateParameter("IID",adVarChar, adParamOutput,m_strThingNew.GetLength()+1,_variant_t(m_strThingNew));
cmmd->Parameters->Append(param); cmmd->CommandText=_bstr_t("SQLProcAddThingsKind");
cmmd->ActiveConnection =theApp.ADOConn;
cmmd->CommandType=adCmdStoredProc;
cmmd->Execute(NULL,NULL,adCmdStoredProc);//
m_strThingNew=(char*)((_bstr_t)(cmmd->Parameters->GetItem("IID")->GetValue()));
MessageBox(m_strThingNew);
UpdateData(FALSE);
cmmd.Detach();
MessageBox("此产品新增成功! * ^ _ ^ * ");
}这段代码能成功执行,但是得到的返回值,m_strThingNew,却只是一个字符串的首字母。不知如何解决,请大侠指点一二,这个问题己经困扰了我一个下午!!!
CString strOperator="0906";
_CommandPtr cmmd;
HRESULT hr=cmmd.CreateInstance(__uuidof(Command));
if (FAILED(hr))
AfxMessageBox("创建_CommandPtr对象失败 ^ O ^ ");
else
{
_ParameterPtr param;
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strThingsKind1.GetLength()+1,_variant_t(m_strThingsKind1));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strName.GetLength()+1,_variant_t(m_strName));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strModel.GetLength()+1,_variant_t(m_strModel));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strCompany.GetLength()+1,_variant_t(m_strCompany));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strPhone.GetLength()+1,_variant_t(m_strPhone));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,m_strNet.GetLength()+1,_variant_t(m_strNet));
cmmd->Parameters->Append(param);
param = cmmd->CreateParameter("",adVarChar, adParamInput,strOperator.GetLength()+1,_variant_t(strOperator));
cmmd->Parameters->Append(param); param = cmmd->CreateParameter("IID",adVarChar, adParamOutput,m_strThingNew.GetLength()+1,_variant_t(m_strThingNew));
cmmd->Parameters->Append(param); cmmd->CommandText=_bstr_t("SQLProcAddThingsKind");
cmmd->ActiveConnection =theApp.ADOConn;
cmmd->CommandType=adCmdStoredProc;
cmmd->Execute(NULL,NULL,adCmdStoredProc);//
m_strThingNew=(char*)((_bstr_t)(cmmd->Parameters->GetItem("IID")->GetValue()));
MessageBox(m_strThingNew);
UpdateData(FALSE);
cmmd.Detach();
MessageBox("此产品新增成功! * ^ _ ^ * ");
}这段代码能成功执行,但是得到的返回值,m_strThingNew,却只是一个字符串的首字母。不知如何解决,请大侠指点一二,这个问题己经困扰了我一个下午!!!
改成
param = cmmd->CreateParameter("IID",adVarChar, adParamOutput,m_strThingNew.GetLength()+10,_variant_t(m_strThingNew));
就行了,原来m_strThingNew.GetLength()+1太短了,具体里面的细节,还请大侠指点一二!!
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185980在使用ADO的时候,我们在程序中经常使用
try
{
//
}
catch(_com_error e)
{
MessageBox(e.ErrorMessage());
........
}来捕获ADO的异常信息
谢谢你,请你再回答一下上面的问题好吗?明天上午我再结帖!