日期:2014-05-16  浏览次数:20452 次

C# 数据库存储过程的讲解应用

在使用VS 2012+SQL Server做简单的销售系统中,通常会遇到一些使用存储过程的情况,那究竟什么是存储过程,它的好处是什么呢?如果在SQL Server中创建一个存储过程,C#中怎样联系存储过程呢?

一.存储过程

存储过程(Stored Procedure)是大型数据库系统中,一组为完成特定功能的SQL程序代码.它已经过编译后存储在数据库中,用户可以通过制定的存储过程名和参数来执行它.至于存储过程的好处:

1.存储过程是在创建时被编译和优化过,调用一次后相关信息就保存在数据库中,同时内存会保留一份存储过程,下次调用就可以直接从内存中调用执行,不占用CUP资源,所以执行速度更快.

2.存储过程可以减少网络通信流量,一个百行T-SQL代码的操作可以通过一条过程代码替换,且不需要在网络中发送数百行代码.

3.存储过程允许模块化设计,当创建后即可在程序中调用多次,这可以改进应用程序的可维护性,并允许与应用程序统一访问数据库.

4.存储过程安全性更高,可以使用数据库的安全机制限制对数据库的访问,如授权某用户只能执行不能修改存储过程,同时它存储过程可以加强应用程序的安全性使其不受SQL注入工具.

5.存储过程允许延迟绑定,可以穿件引用尚不存在的表,在创建存储过程中只检查语法,知道第一次执行该存储过程时才对其编译,如果引用的表不存在能创建存储过程,但运行会失败.

上面就是一些我对存储过程的认识,推荐大家在做系统时尽量使用存储过程.上面有些知识引致周志奎的《数据库系统原理》,如果想更详细的了解存储过程,可以访问该博客(推荐):http://www.cnblogs.com/tjsquall/archive/2008/02/04/1064402.html

二.SQLServer如何使用存储过程

 如果在SQL Server中使用存储过程呢?存储过程的创建语句主要如下,当创建完成可以通过execute执行存储过程:

create procedure 存储过程名 [参数1,….参数n]
as
begin
Transact SQL语句块;
End
--执行
execute 存储过程名 [参数1,….参数n]

举个实例:我在数据库中使用create创建了一张Telephone,并使用Insert向该表中已经插入了数据,现在想使用存储过程查询具体手机品牌为诺基亚的手机信息,代码如下:

-- ===========================================
-- 创建存储过程(一)
-- 手机库存查询 查询手机品牌
-- ===========================================
--创建存储过程
create procedure PSelcetPhoneName
@Pname varchar(20)
as
begin
select phonename as 手机品牌,phoneclass as 手机型号,phoneid as 序列号,
price as 出厂价格,arrtime as 进货时间,period as 保修时间
from Telephone where phonename=@Pname
end
--删除存储过程
drop procedure PSelcetPhoneName
--执行存储过程
execute PSelcetPhoneName '诺基亚'

当执行execut时,会显示如下信息:

同时,下面在介绍一个更新的存储过程的代码,方便大家举一反三.它的功能是把用户名为”bbbbb”的用户密码更新为