欢迎来到天天文库
浏览记录
ID:6903621
大小:31.96 KB
页数:7页
时间:2018-01-30
《asp.net中使用sql的存储过程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ASP.NET中使用SQL的存储过程 (神华准能公司办公室,内蒙古薛家湾010300) 摘要:介绍了存储过程的作用,分析了传统的SQL语句执行命令速度低,而且在使用中维护工作很繁杂,甚至不同的维护者看不懂他人的程序的问题,强调了使用存储过程解决这些问题的。 关键词:ASP.NET;存储过程;速度 中图分类号:TP333文献标识码:A文章编号:1007—6921(XX)08—0060—01 1存储过程简介 简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触
2、发器调用。它的参数可以被传递和返回。与应用程序中的函数过程类似,存储过程可以通过名字来调用,而且它们同样有输入参数和输出参数。 根据返回值类型的不同,我们可以将存储过程分为三类:返回记录集的存储过程,返回数值的存储过程,以及行为存储过程。顾名思义,返回记录集的存储过程的执行结果是一个记录集,典型的例子是从数据库中检索出符合某一个或几个条件的记录;返回数值的存储过程执行完以后返回一个值,例如在数据库中执行一个有返回值的函数或命令;最后,行为存储过程仅仅是用来实现数据库的某个功能,而没有返回值,例如在数据库中的更新和删除操作。 在使用.NET的过程中,数
3、据库访问是一个很重要的部分,特别是在B/S系统的构建过程中,数据库操作几乎成为了一个必不可少的操作。调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用SQL语句,所以存储过程是很有用而且很重要的。 2使用存储过程的好处 相对于直接使用SQL语句,在应用程序中直接调用存储过程有以下好处: 2.1减少网络通信量。调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。 2.2执
4、行速度更快。有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。 其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。 2.3更强的适应性:由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。 由以上的分析可以看到,在应用程序中使用存储过程是很有必要的。 3两种不同的存储过程调用方法 本文的所有示例程序均工作于SqlServer数据库上,所有例子均采用C
5、#语言。 3.1要在应用程序中访问数据库,一般性的步骤是:首先声明一个数据库连接SqlConnection,然后声明一个数据库命令SqlCommand,用来执行SQL语句和存储过程。有了这两个对象后,就可以根据自己的需要采用不同的执行方式达到目的。需要补充的是,不要忘记在页面上添加如下的引用语句:usingSystem.Data.SqlClient。 就执行存储过程来说,如果执行的是第一类存储过程,那么就要用一个DataAdapter将结果填充到一个DataSet中,然后就可以使用数据网格控件将结果呈现在页面上了;如果执行的是第二和第三种存储过程,则不
6、需要此过程,只需要根据特定的返回判定操作是否成功完成即可。 3.1.1执行一个没有参数的存储过程的代码如下: SqlConnectionconn=newSqlConnection(“connectionString”); SqlDataAdapterda=newSqlDataAdapter(); da.SelectCommand=newSqlCommand(); da.SelectCommand.Connection=conn; da.SelectCommand.CommandText=“NameOfProcedure”;
7、da.SelectCommand.CommandType=CommandType.StoredProcedure; 然后只要选择适当的方式执行此处过程,用于不同的目的即可。 3.1.2执行一个有参数的存储过程的代码如下: 在上面代码基础上添加如下代码: param=newSqlParameter(“ParameterName”,SqlDbType.DateTime); param.Direction=ParameterDirection.Input; param.Value=Convert.ToDateTime(inputdat
此文档下载收益归作者所有