APP下载

浅析基于.NET的数据库存储过程应用

2017-05-30魏宏昌王英杰梁晓强王志娟张朝亮

科技尚品 2017年1期
关键词:数据库应用

魏宏昌 王英杰 梁晓强 王志娟 张朝亮

摘 要:数据是软件的重要组成部分,特别是在B/S系统中数据库访问是一个读写数据操作很重要的部分,而通过存储过程实现数据库访问是很多软件使用的方法。本文介绍ASP.NET 数据库应用程序调用SQL Server数据库管理系统中的存储过程的方法,以及使用存储过程的优势和注意事项。

关键词:存储过程;数据库;应用

1 前言

SQL Server数据库管理系统是目前最流行的关系型数据库管理系统之一,主要包括数据库、表、视图,还有函数、存储过程、触发器等可编程性对象。那什么是存储过程呢?存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码就像C#中的一个方法一样,实现一些功能比如對单表或多表的增删改查。

在SQL Server数据库管理系统中容易混淆的有函数和存储过程两个对象,它们两个其实还是有很大区别的,主要体现在以下几点:

(1)一般来说,存储过程的功能要复杂一点,而函数是简短而有针对性的。

(2)存储过程可借助output返回参数,而函数只能返回值或者数据集。

(3)存储过程是作为一个独立的部分来执行,而函数可以作为Select语句的一部分,由于函数可以返回一个数据集,因此函数可以在查询语句中位于FROM关键字的后面,存储过程则不能。

2 存储过程的优点

存储过程作为SQL Server数据库管理系统的重要对象,提供了许多标准SQL语言中所没有的高级特性,主要表现在以下几个方面:

(1)执行速度更快。

(2)允许模块化程序设计。

(3)提高系统安全性。

(4)减少网络流通量。

3 存储过程的分类

存储过程大致分为以下这些分类:没有输入输出的存储过程、有返回值的存储过程、只返回单一记录集的存储过程、返回多个记录集的存储过程、有输入参数和输出参数的存储过程、同时具有返回值和输入与输出参数的存储过程、同时有返回值和记录集的存储过程。

下面我们以SQL Server自带的Northwind数据库为例,定义一个添加区域名称操作,并返回这个操作影响的行数,同时还要获取新添加的区域名的ID以及所有区域名的记录集。定义存储过程的SQL语句:

CREATE PROCEDURE uspRegion @regionId int output,@regionDescription nchar(50)

AS insert into Region(RegionDescription)values(@regionDescription)

set @regionId = @@IDENTITY select * from Region return @@rowcount

4 在ASP.NET程序里调用存储过程

要访问数据库就要用到ADO.NET去操作,使用其中的Connection对象连接数据库,再使用Command对象执行SQL语句或存储过程,返回值和输出参数都要使用Command对象获得,如果有返回的数据集,还要使用DataAdapter对象将数据集填充到DataSet对象里。

我们使用上面定义的存储过程,使用ASP.NET执行添加区域名操作,我们先创建一个ASP.NET页面,用一个名为txtDesc的文本框控件作为区域名的输入,用名为gvRegion的数据表格控件显示所有区域信息,用名为lblInfo的标签控件显示添加操作的结果和新区域名的ID。提交按钮的后台代码如下:

SqlCommand cmd = new SqlCommand();cmd.Connection = conn;cmd.CommandText = “ uspRegion “;

cmd.CommandType = CommandType.StoredProcedure;

IDataParameter[] pa = {new SqlParameter(“@regionId”,SqlDbType.Int,4),

new SqlParameter(“@regionDescription”,SqlDbType.NChar,50),new SqlParameter(“val”,SqlDbType.Int,4)};

pa[0].Direction = ParameterDirection.Output;pa[1].Value = txtDesc.Text;

ps[2].Direction = ParameterDirection.ReturnValue;

cmd.Parameters.Add(pa[0]);cmd.Parameters.Add(pa[1]);cmd.Parameters.Add(pa[2]);

SqlDataAdapter da = new SqlDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds);

gvRegion.DataSource = ds.Tables[0];gvRegion.DataBind();

lblInfo.Text = “操作行:" +pa[2].Value.ToString()+ ",新ID为" + pa[0].Value.ToString();

5 结语

本文讨论了SQL Server中的存储过程的概念、分类和优缺点,并通过一个实例和代码描述了在ASP.NET程序里调用带输入输出参数已经返回数据集的存储过程。从中我们发现,通过使用存储过程,可以提高数据的独立性和逻辑性,还能提高程序的安全性与可扩展性。

参考文献

[1]周慧,施乐军.数据库技术及应用[M].人民邮电出版社,2015.

[2]高宏.ASP.NET典型模块与项目实战大全[M].清华大学出版社,2014.

(作者单位:石家庄信息工程职业学院)

猜你喜欢

数据库应用
数据库
数据库
多媒体技术在小学语文教学中的应用研究
分析膜技术及其在电厂水处理中的应用
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析
会计与统计的比较研究
数据库
数据库