首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程
创建ASP.NET数据存储层(4)-.NET教程,Asp.Net开发
作者:网友供稿 点击:17
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
使用 visual studio .net 添加存储过程

  下面详细介绍如何在 visual studio .net 2003 中将存储过程添加到现有 sql server 数据库中。您需要使用服务器资源管理器打开一个新的存储过程模板,进行编辑,然后再将其保存到数据库中。下面是分步实现这一过程的示例:

  打开 visual studio .net,然后打开一个现有的数据库项目(如本文前面所启动的项目)或启动一个新项目。

  在 server explorer(服务器资源管理器)中,展开 data connections(数据连接)树,找到您要使用的数据库 (dotnetkb),然后在 stored procedures(存储过程)节点上单击鼠标右键,打开上下文相关菜单。

  从上下文相关菜单中选择 new stored procedure(新建存储过程),在 visual studio .net 编辑器空间中打开一个存储过程模板。现在,可以键入内容了。

  完成编辑后,只需关闭编辑器中正在编辑的页面,visual studio .net 将使用存储过程的名称将该项内容保存到数据库中。如果键入的内容有误,编辑器会向您报告这些错误,您可以在保存存储过程之前修正这些错误(参见图 11)。

  下面是存储过程的一个简单示例,它返回一个主题列表。

create procedure topicsgetlist
as
set nocount on -- 不返回受影响行的值
select
id,
title,
description
from
topics
order by
title
return @@error

  在本示例中,有几点需要指出。首先,请注意 set nocount on 行。它告诉 sql server 停止为该查询计算受影响的行数,并停止向调用函数返回该值。这是一项不必要的额外工作。其次,结尾处的 return @@error 一行很重要。此行代码返回 sql server 中发生的错误的整数值。您可以在调用例程中使用此代码完成其他诊断和错误处理操作。您现在并不需要执行任何操作,但它们是创建存储过程时应该遵循的两个好习惯。

  下面是一个更复杂的存储过程。此过程用于从数据库中检索单条主题记录。您会发现一些附加项,包括输入参数、返回特定值的输出参数,以及检查输入参数并在需要时返回错误的某些程序代码。

create procedure topicsgetitem
(
@admincode char(3),
@id int,
@title varchar(30) output,
@description varchar(500) output
)
as
set nocount on -- 不返回受影响行的值
-- 确保是一个 admin 用户
if @admincode<>adm
begin
return 100 -- 无效 admin 错误
end
-- 检查记录是否存在
if (select count(id) from topics where id=@id)=0
begin
return 101 --- 无效 id 代码
end
-- 继续执行并返回该记录
select
@title=title,
@description=description
from
topics
where
id=@id
-- 返回错误,如果成功则返回 0
return @@error

  在本示例中,还有几点需要指出。首先,您会在存储过程顶端看到一个参数列表。除前两个参数外,其他参数均被标记为 output 参数。这些参数用于返回选定记录的值。使用一条记录的返回值要比返回带有所有字段的记录集合更为高效。

  其次,您会发现用于检查 @admincode 参数值的 t-sql 数据块,以确保传递正确的代码。如果传递的代码不正确,则传递返回代码 100 并停止执行该过程。再其次,您会发现检查 @id 参数,以确保其代表一条现有记录。如果不是现有记录,则传送返回代码 101 并终止执行。最后,如果输入变量都有效,存储过程将尝试选择记录并返回相应的值。如果此时发生任何错误,将由该过程的最后一行代码进行处理。

  注意:通常情况下,最好将自定义错误代码及其含义保存在数据库中的一个单独的表格中,或保存在解决方案可以访问的文本文件中。这样就可以轻松更新这些错误代码,并与解决方案中的其他子系统共享。因为这只是一个短小的示例,其中只使用了两个错误代码,所以我决定创建一个包含大量代码和消息的文档,以供其他子系统参考。

  该解决方案中包含的存储过程超过 25 个。本文仅举一例进行说明,其他代码可以通过本文开始处的链接进行下载。最后这个示例使用一个自定义的内置标量函数。

  使用自定义标量函数

  有时,单独一个存储过程不足以解决问题。例如,我们的用户方案中就有一个方案要求列出某个问题的解答数目。解决此问题的方法之一是生成一个对问题的解答进行计数的子查询。另外一种方法是生成一个自定义函数,返回标量值并将其包含在问题查询中。这种方法还有一个好处,那就是我们可以在其他存储过程中再次使用该标量函数。

  添加自定义函数的操作类似于添加存储过程。在 server explorer(服务器资源管理器)树中,在选定数据库的 functions(函数)节点上单击鼠标右键,然后从上下文相关菜单中选择 new scalar-valued function(新建标量值函数)。然后在编辑器中编辑该文档,并像保存存储过程那样保存该文档。

  以下是自定义函数的代码:

create function dbo.fn_questionsgetresponsecount
(
@id int
)
returns int
as
begin
declare @responsecount int
set @responsecount =
(
select
count(responses.id)
from
responses
where
responses.questionid=@id
)
return @responsecount
end

  以下是使用自定义函数的存储过程:

create procedure questionsgetcountwithnoresponses
(
@total int output
)
as
set nocount on -- 不返回受影响行的值

select
@total=count(id)
from
questions
where
dbo.fn_questionsgetresponsecount(questions.id)=0

return @@error

  了解如何编写存储过程和自定义函数之后,我们还将讨论使用 visual studio .net 2003 创建数据层时的另一个问题,即安全性问题。

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用windows脚本入侵WINDOWS服务器-网管专栏,网络技术
·清除网页历史记录-ASP教程,ASP应用
·在java中利用动态编译实现eval-JSP教程,Java技巧及代码
·如何制作Asp.Net界面模板-.NET教程,Asp.Net开发
·C#实现的18位身份证格式验证算法-.NET教程,数据库应用
·如何用PHP发电子邮件(1)-PHP教程,邮件处理
·Java 中的 XML:Java 文档模型的用法-JSP教程,Java与XML
·如何更新父窗体-.NET教程,Asp.Net开发
·用Windows 2003实现软RAID-网管专栏,操作系统
·使用Magic Winmail Server轻松架设邮件服务器(五)-网管专栏,邮件服务
最新文章
·photoshop让花卉照片更加清晰嫩绿_photoshop教程
·论c#变得越来越臃肿是不可避免的_c#应用
·杜少军:行走在网络世界的奇才_站长访谈
·教你用photoshop外插滤镜做卷页效果_photoshop教程
·通过dreamweaver设计网页时组织css的建议_dreamweaver教程
·草根网站比门户网站更有前途_站长心得
·如何针对google进行网站优化_google推广
·google推“我的搜索历史”测试版 提高个性化搜索竞争力_google推广
·八大要领 做网站就这么简单2_站长心得
·关闭widnows vista偷偷共享的文件_windows vista
相关主题
  • 创建asp.net程序时候发生错误"http/1.0 500 server error"的一个解决办法_asp.net技巧
  • 创建ASP.NET数据存储层(7)-.NET教程,Asp.Net开发
  • 创建ASP.NET数据存储层(6)-.NET教程,Asp.Net开发
  • 创建ASP.NET数据存储层(5)-.NET教程,Asp.Net开发
  • 创建ASP.NET数据存储层(3)-.NET教程,Asp.Net开发
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭