VC调用存储过程的方法

1、如果用ODBC访问数据库的话,可参考下列代码:
CDatabase * pDatabase = new CDatabase;

TRY
{
pDatabase->OpenEx( _T("DSN=ODBCName;UID=***;PWD=***"), CDatabase::noOdbcDialog);
}
CATCH (CDBException, e)
{
delete pDatabase;
return;
}END_CATCH

SQL.Format("exec sp_Name");//有参数的话直接写再后面
pDatabase->ExecuteSQL(SQL);

pDatabase->Close();
delete pDatabase;  

2、用ADO调用存储过程

_ConnectionPtr Conn = NULL;
_RecordsetPtr Rs = NULL;
_CommandPtr Cmd = NULL;

CoInitialize(NULL);

Conn.CreateInstance ( __uuidof(Connection));
Rs.CreateInstance (__uuidof(Recordset));
Cmd.CreateInstance (__uuidof(Command));

Conn->Open(L"db", L"sa", L"", adOpenUnspecified); //打开正常

//如下为_CommandPtr对象参数的赋值和调用
Cmd->ActiveConnection = Conn;
Cmd->CommandText       = "SP_TEST";
//数据库中实际存在这个测试存储过程,select * from atable,不传递参数
Cmd->CommandType       = adCmdStoredProc;
Cmd->Parameters->Refresh();
Rs = Cmd->Execute( NULL,NULL, adCmdUnknown );   //COM出错。

//注释掉的代码为直接的SQL语句提交,运行正确。
//Cmd->ActiveConnection=Conn;
//Cmd->CommandText = "select * from atable";
//Cmd->CommandType = adCmdText;
//Cmd->Parameters->Refresh();
//Rs = Cmd->Execute(NULL,NULL,adCmdUnknown);

.....
Rs->Close();
Conn->Close();

CoUninitialize();

3、转载http://blog.csdn.net/guanchanghui/archive/2006/11/26/1414600.aspx

vc ado调用存储过程收藏

没想到今天会这么晚才睡觉,在送走我的宝宝后,我平静下来想把公司的客户端的VC读写存储过程的方法好好整理一下,因为这个解决方案还没有最终做好,我有责任把这个问题完备的解决掉,vc进行一些高级的数据库操作确实显得很麻烦,这点做的不如.net好,但是作为一个客户端软件也必须要具备这个功能,在认真进行配合编码后,正确的结果出现了,我很兴奋,很长时间没有这种在写出一个认为较难实现的东东后的兴奋感了,可能是宝宝给我的运气,核心代码如下 :
CADOParameter pParamIn(CADORecordset::typeChar, sizeof ( char ) * 50 );

CString a
= " guanchanghui " ;
pParamIn.SetValue(a);

CADOCommand pCmd(
& m_pDb, " GetPrivateServer " );

pCmd.AddParameter(
& pParamIn);



CADORecordset
* prs = new CADORecordset( & m_pDb);

if (m_pRs.Execute( & pCmd))
... {

    
if(m_pRs.Execute(&pCmd))
    
...{
    
//执行SELETE语句
     _RecordsetPtr m_pRecordset;

    
while (!m_pRs.IsEOF())
    
...{
         m_pRecordset
=m_pRs.GetRecordset();
         CString ServerIP,RoleName;
         ServerIP
= (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("serverip");
         RoleName
= (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("RoleName");
         m_serverip
+=ServerIP+"     "+RoleName;
         m_serverip
+=" ";
         UpdateData(FALSE);
         m_pRs.MoveNext();
        
     }

     }


}
delete prs;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值