- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)
您可能关注的文档
最近下载
- 2025中信银行信用卡中心银川分中心招聘笔试备考试题及答案解析.docx
- 2025年金华职业技术学院单招职业倾向性测试题库及参考答案.docx VIP
- 武汉市2025届高中毕业生四月调研考试(四调)数学试卷(含答案).pdf
- 陕西西安市长安城乡建设开发公司招聘笔试题库2024.pdf VIP
- MEMS传感器和智能传感器的发展.docx VIP
- 中学英语课堂教育教学评价策略的研究结题报告.docx
- 运筹学(中国人民解放军陆军工程大学)中国大学MOOC慕课章节测验答案.pdf
- 内蒙古风能、太阳能资源.doc VIP
- 金丽衢十二校2024学年2025届高三第二次联考生物试卷(含答案).pdf
- 《中医骨伤科学》课件—— 肘关节脱位.pptx VIP
文档评论(0)