NET中统一的存储过程调用方法.docxVIP

  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文档。上传文档
查看更多
.NET 中统一的存储过程调用方法 在各种系统开发中,使用存储过程是一个良好的习惯,不仅可以带来临时表、函数、游标等特性,而且调试、升级、维护都变得方便。在存储过程中能够把数据经过处理再返回,这样能够对数据提供更多的分析和控制。在存储过程的调用中,我们发现存储过程的调用都几乎是如下的模式: 声明 SqlConnection 声明 SqlCommand,并且设置其 Connection 属性为刚声明的 SqlConnection 实例,设置 CommandName 为存储过程名,CommandType 为存储过程。3.往刚声明的 SqlCommand 实例的 Parameters 集合中添加所有的存储过程调用需要的参数 4.呼叫 SqlCommand 的 ExecuteReader()方法来得到存储过程的返回行集 4.声明 SqlDataAdapter 和 DataSet,设置 SqlDataAdapter 的 SelectCommand 属性为 3 中声明的实例,再调用其 Fill 方法来把返回的行集填充到 DataSet 中5.关闭 SqlConnection 对象 6.释放声明的各对象实例(说明:4 指的是两种数据提取方法)在这个调用过程中,我们发现几乎所有的存储过程调用都是这个模式,之间的区别就在第 2 步中的存储过程名不同和第 3 步中各个存储过程调用使用的参数是不一样的,他们有参数名字、方向、数据类型、长度等的区别。那么,有没有一种方法可以实现所有的存储过程调用?即只需要提供存储过程名,然后把参数值传入调用方法即可实现存储过程的调用,再用某些数据结构来保存返回的行集、传出参数值、过程返回值。经过研究 SQL Server 的系统表,我们发现这个想法是切实可行的。 .系统表与信息结构视图 SQL Server 等关系型数据库都将元数据以某种方式保存在数据库中, 在SQL Server 中就是系统数据库和系统表。安装 SQL Server 后会自动生成四个系统数据库:master, model, msdb 与 tempdb。master 数据库是 SQL Server 中所有系统级信息的仓库。登录帐号、配置设置、系统存储过程和其他数据库的存在性都记录在 master 数据库中。msdb 数据库保存 SQL Server Agent 的信息。定义作业、操作员和警报时,他们存放在 msdb 中。model 是个模框,用于所有用户生成的数据库。生成新数据库时,将 model 复制,建立所要的对象。 tempdb 保存SQL Server 中的临时对象。显示生成的临时表和临时存储过程以及系统生成的临时对象都利用 tempdb。[1] 而且每个数据库中都有自己的系统表。这些系统表被用来保存配置和对象信息。从这些系统表中,我们就可以得到每个存储过程的所有参数的信息。syscolumns 表中就保存了这些信息。其中有参数名、类型、长度、方向等需要用到我们方法中的信息。 不过,系统表中的字段会随着 SQL Server 版本的变化而变化。比如 syscolumns 中的 type 和 xtype 就是这样的一个变化例子,他们都保存了类型的信息。要让我们的方法适应 SQL Server 的版本变化要求,就要用到信息结构视图。 ANSI-92 将信息结构视图定义为一组提供系统数据的视图。通过利用该视图,可以将实际系统表从应用程序中隐藏起来。系统表的改变就不会影响到应用程序,这样应用程序就可以独立于数据库厂家和版本。 [1] ANSI-92 和 SQL Server 支持用三段命名结构引用本地服务器上的对象。 ANSI-92 术 语 称 为 catalog.schema.object , 而 SQL Server 称 为database.owner.object。[1]比如我们要找到所有存储过程的所有参数信息,就可以 用: select * from INFORMATION_SCHEMA.PARAMETERS 如果要找到某个存储 过 程 的 所 有 参 数 信 息 , 就是 : select * from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_N AME =’Proc1’ 有了信息结构视图,我们的问题就解决了一大半了。下面我们看如何在.NET 中实现我们的方法。 实现方法 实现的重点就放在如何根据存储过程名来得到它的所有的参数信息,再根据这些参数信息自动的创建各个参数。为了让这些动作自动化,声明 SqlConnection、SqlCommand、SqlParameter 的过程,创建各个 SqlParameter 的过程对用户

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档