代码如下,请高手指点~~
int ADOConn(char* sfz)
{
CoInitialize(NULL);
_ConnectionPtr conn;
HRESULT hr;
hr = conn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
return -1; try
{
conn->Open("Provider=OraOLEDB.Oracle.1;Password=nct;Persist Security Info=True;User ID=phsb;Data Source=devdb","","",NULL);
}
catch(_com_error e)
{
return -1;
} _CommandPtr comm;
HRESULT hr1 = comm.CreateInstance(__uuidof(Command));
if(FAILED(hr1))
{
return -1;
}
comm->ActiveConnection = conn; //ADO连接
comm->CommandText="sip_public.f_get_lsfz"; //存储过程名
comm->Parameters->Append(comm->CreateParameter("result",adBSTR,adParamOutput,3000,""));
comm->Parameters->Append(comm->CreateParameter("sfz",adBSTR,adParamInput,3000,"XXXX"));
comm->Execute(NULL,NULL,adCmdStoredProc); //执行到这里出错
//comm->Parameters->GetItem("result")->Value.bstrVal; //取返回值
//如何把返回值赋给变量sfz
CoUninitialize();
return 1;
}
int ADOConn(char* sfz)
{
CoInitialize(NULL);
_ConnectionPtr conn;
HRESULT hr;
hr = conn.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
return -1; try
{
conn->Open("Provider=OraOLEDB.Oracle.1;Password=nct;Persist Security Info=True;User ID=phsb;Data Source=devdb","","",NULL);
}
catch(_com_error e)
{
return -1;
} _CommandPtr comm;
HRESULT hr1 = comm.CreateInstance(__uuidof(Command));
if(FAILED(hr1))
{
return -1;
}
comm->ActiveConnection = conn; //ADO连接
comm->CommandText="sip_public.f_get_lsfz"; //存储过程名
comm->Parameters->Append(comm->CreateParameter("result",adBSTR,adParamOutput,3000,""));
comm->Parameters->Append(comm->CreateParameter("sfz",adBSTR,adParamInput,3000,"XXXX"));
comm->Execute(NULL,NULL,adCmdStoredProc); //执行到这里出错
//comm->Parameters->GetItem("result")->Value.bstrVal; //取返回值
//如何把返回值赋给变量sfz
CoUninitialize();
return 1;
}
解决方案 »
- 关于hdf5找不到.lib文件
- 深入浅出MFC中第三章Frame3调试时错误C2277
- 狂郁闷找工作去了,站了1个多小时挤得哗哗流汗,没有四级免谈!!!!怎么办?进来有分~~
- dll中封装ado问题
- 高手请进,,,,,怎样制作特殊的安装程序???
- MFC Wizard创建的mdi文档,如何让程序一运行就打开最近打开过的文件?
- 求人帮忙做一个VC程序。现金交易价钱自己开
- CListCtrl自绘,通过继承CWnd实现而不是不继承CListCtrl
- 自己写的COM接口,如何在另一个程序中调用?
- cui(蚊子王)与大家聊聊
- 一个系统安装,多个系统运行的方法?
- ocx 注册 0x80040200, 整死人!
用try...catch(_com_error &e)捕捉一下异常,看看报什么错。
http://www.fruitfruit.com/vc/database/oracle.cpp
comm->ActiveConnection = conn; //ADO连接
comm->CommandType = adCmdStoredProc;
comm->CommandText="sip_public.f_get_lsfz"; //存储过程名
comm->Parameters->Append(comm->CreateParameter("result",adBSTR,adParamOutput,3000,""));
comm->Parameters->Append(comm->CreateParameter("sfz",adBSTR,adParamInput,3000,"XXXX"));
comm->Execute;
CString test=comm->Parameters->GetItem("result")->Value.bstrVal; //取返回值
strcpy(sfz, test); //返回值赋给变量sfz,返回为空??