网站大量收购独家精品文档,联系QQ:2885784924

VC中使用ADO调用存储过程实现方法.pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC中使用ADO调用存储过程实现方法

VC 中使用ADO 调用存储过程实现方法 开发环境是VS2005 ,数据库是SQL Sever 2000 1. 在进入正题之前,先讲点别的,如何在VC 中连接Sybase 数据库, 连接字符串为, _bstr_t strCnn(\Driver={Sybase System 11};Srvr=RRRRR;Uid=RRR_Mao_bb1;Pwd=user2\); 这里,RRRRR 是数据库的名称,已经在Sybase-sdedit 中设定好了 RRR_Mao_bb1 和 user2 分别是用户名和密码 不过使用这种基于ODBC 的连接使用一段时间以后,就出现问题了,出现了“Catastrophic failure”的错误,微软的解释是 /kb/243349/en-us 2. 为了使我们的调用存储过程的例子有更多的通用性,我建了有输入参数,有输出参数,有一 个返回记录集,有一个返回值的存储过程,如下 CREATE PROCEDURE sp_1 ( @pin1 int , @pin2 CHAR(10), @pout1 int OUTPUT, @pout2 CHAR(10) OUTPUT ) AS BEGIN declare @retval int select @pout1 = @pin1 + 100 select @pout2 = left( ltrim(rtrim(@pin2)) + \123\ , 10) select Num,Name,Date from TABLE1 select @retval = 1236 return @retval END 对于这个SP 来说,他这些个参数是 @RETURN_VALUE(int ,返回值) @pin1 ( int ,输入 ) @pin2 ( char(10) ,输入 ) @pout1 (int ,输入/输出) @pout1 ( char(10) , 输入/输出) @RETURN_VALUE 是第0 个参数,@pin1 是第1 个,依此类推 以上信息可以在SQL 的查询分析器中看到,注意,这些参数的顺序很重要 3.调用的前期准备 这就不多说了,什么import 库阿,建立连接阿,什么的,不多说了, 这些在VC 中使用ADO 进行数据库开发的一些资料的整理 中有了阐述 假定连接是pConn 注意,这里要把pConn 设定成adUseClient 型[Page] pConn-CursorLocation =adUseClient; 下面我要贴具体的代码了,为了精简所贴的代码,我把所有的捕获异常都没贴出来(try catch) 4.使用Refresh 的方法来调用 先定义一些变量 _CommandPtr pCmd = NULL; _RecordsetPtr pRecordset = NULL; 初始化他们, pCmd.CreateInstance(__uuidof(Command)); pRecordset.CreateInstance(_uuidof(Recordset)); pCmd-ActiveConnection = pConn; pCmd-CommandType = adCmdStoredProc; pCmd-CommandText=_bstr_t(_T(\sp_1\)); //SP Name 然后给那些input 参数赋值 pCmd-Parameters-Refresh(); pCmd-Parameters-Item[_variant_t(_bstr_t(\@pin1\) )]-Value=_variant_t( 3); pCmd-Parameters-Item[_variant_t(_bstr_t(\@pin2\) )]-Value=_variant_t( \DD\); 这个refresh 一定要有, 调SP pRecordset = pCmd-Execute(NULL,NULL,adCmdStoredProc); int retVal = -1; _variant_t VretVal ; //GetRetVal VretVal = pCmd-Parameters-GetItem(short(0)

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档