VC++调用带参数的存储过程.DOCVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++调用带参数的存储过程.DOC

VC++调用带参数的存储过程最近由于工作之需,要利用VC进行一些高级的数据库操作,如执行存储过程等。遍寻网络资源发现好使的不多(经常#30XX错误,大部分应该是COM的VARIANT数据类型所致,其实有个讨巧的方法,请看下文),在自己的实验下小有所得。记下学习笔记以备参考: 1 进行ADO编程的必备步骤:引入msado15.dll ?#import c:/program files/common files/system/ado/msado15.dll no_namespace rename(EOF,adoEOF)//避免与文件的结束符号混淆,将EOF改为adoEOF ?当然要记得在所有#include之后加入啊 2 也是必备的:初始化Com库 ?::CoInitialize(NULL);///初始化COM库 3 建立数据库连接 ?_ConnectionPtr m_pConnection;//连接数据库的Com智能指针,可以自动Release ^_^ ?m_pConnection.CreateInstance(ADODB.Connection);//建立实例返回HRESULT 所以最好if一下看看成功否 4 连接数据库 ?m_pConnection-Open(Driver={SQL Server};Server=localhost;Database=Northwind;UID=sa;PWD=wxy,,,adModeUnknown); ? ?最好用Try的,可以捕获错误啊,例如 ?try ?{ ?m_pConnection-Open(Driver={SQL Server};Server=localhost;Database=Northwind;UID=sa;PWD=wxy,,,adModeUnknown); ??.........//其他数据库操作 ?} ?catch(_com_error e) ?{ ??//处理错误吧 ?} 5 创建执行存储过程的命令对象 ?_CommandPtr m_pCommand;//还是智能指针 ?m_pCommand.CreateInstance(ADODB.Command);//实例 ?m_pCommand-ActiveConnection = m_pConnection;//设置连接,别忘了啊 ?m_pCommand-CommandText = Test;//存储过程为Test ?假设我的存储过程如下: ??CREATE PROCEDURE Test? ??@id int, ??@Name varchar(20), ??@sdate datetime, ??@ret char(1) output ???AS ??insert into VCStorproc values(@id,@Name,@sdate) ??if @@error=0 ???set @ret=1 ??else ???set @ret=0 ??go ?? 6 建立传入存储过程的参数 ?存储过程Test中输入参数id,name,sdate 输出参数ret? 记住他们的类型和大小啊 ?下面就来创建4个参数 ?VC中用_ParameterPtr智能指针来建立参数,具体如下: ?_ParameterPtr m_pParam; ?m_pParam.CreateInstance(ADODB.Parameter); ?_ParameterPtr m_pParam1;//附加数字的命名习惯不好别学我啊 ?m_pParam1.CreateInstance(ADODB.Parameter); ?_ParameterPtr m_pParam2; ?m_pParam2.CreateInstance(ADODB.Parameter);? ?_ParameterPtr m_pParamRet; ?m_pParamRet.CreateInstance(ADODB.Parameter); ?别高兴还没有真正的建立好参数 ?m_pParam = m_pCommand-CreateParameter(id,adInteger,adParamInput,-1,(_variant_t)10);//给参数设置各属性 ?m_pCommand-Parameters-Append(m_pParam);//加入到Command对象的参数集属性中 ?m_pParam1 = m_pCommand-CreateParameter(Name,adVarChar,adParamInput,20,(_variant_t)songwenfeng); ?m_pCommand-Parameters-Append(m_pParam1); ?m_pParam2 = m_pCommand-Create

文档评论(0)

seym + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档