vc6.0链接数据库调用存储过程

一、引用

#import "msado15.dll" no_namespace rename("EOF", "adoEOF") //相对路径的

//#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF") //绝对路径的

二、始化Com库(下面两种都可以)

AfxOleInit(); //add by jiao

//::CoInitialize(NULL);///初始化COM库

三、创建链接

_ConnectionPtr m_pConnection;

HRESULT hr;
try
{
//ADODB.Connection __uuidof(Connection)
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Driver={SQL Server};Server=172.16.45.10;Database=dd;UID=dd;PWD=dd","","",adModeUnknown);

AfxMessageBox("OK");
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}

四、存储过程的调用

_CommandPtr m_pCommand;//还是智能指针
m_pCommand.CreateInstance("ADODB.Command");//实例
m_pCommand->CommandType=adCmdStoredProc;//表示为存储过程adCmdStoredProc
m_pCommand->ActiveConnection = m_pConnection;//设置连接,别忘了啊
m_pCommand->CommandText = "Test";//存储过程为Test

_ParameterPtr m_pParam;
m_pParam.CreateInstance("ADODB.Parameter");

_ParameterPtr m_pParamRet;
m_pParamRet.CreateInstance("ADODB.Parameter");

CString strTmp;
strTmp.Format("%s","jiao");
_variant_t var = (LPCTSTR)strTmp;//转换为_variant_t
m_pParam = m_pCommand->CreateParameter("Name",adVarChar,adParamInput,20,var);

//m_pParam = m_pCommand->CreateParameter("Name",adVarChar,adParamInput,20,(_variant_t)"DengKanjiao");//adVarChar对应VarChar,adParamInput表明输入参数
m_pCommand->Parameters->Append(m_pParam);//加入到Command对象的参数集属性中

//m_pParamRet=m_pCommand->CreateParameter("ret",adChar,adParamOutput,1); //adChar对应char
m_pParamRet=m_pCommand->CreateParameter("ret",adInteger,adParamOutput,1);//adInteger对应int ,adParamOutput表明输出参数
m_pCommand->Parameters->Append(m_pParamRet);


m_pCommand->Execute(NULL,NULL,adCmdStoredProc);

// _variant_t result = m_pCommand->Parameters->GetItem("ret")->GetValue();
int m_nNewNetID=(long)m_pCommand->Parameters->GetItem(_bstr_t("ret"))->GetValue();// 获取返回值

m_pConnection->Close();
CoUninitialize();

AfxMessageBox("Success");

五、存储的SQL语句

CREATE PROCEDURE Test
@Name varchar(20),
@ret int output
AS
declare @nCallTimeLen as int
set @nCallTimeLen=20000
insert into UserInfo values(@Name)
if @@error=0
set @nCallTimeLen=300
else
set @nCallTimeLen=200
set @ret=@nCallTimeLen
return @ret
go


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值