精通NET20的Web20 电子教程(上)_第1页
精通NET20的Web20 电子教程(上)_第2页
精通NET20的Web20 电子教程(上)_第3页
精通NET20的Web20 电子教程(上)_第4页
精通NET20的Web20 电子教程(上)_第5页
已阅读5页,还剩147页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章Web2.0网络时代Web是WorldWideWeb的简称,通常称为万维网或互联网。用户可以通过浏览器访问互联网上的网站,并通过网站获取相关信息。根据模式不同,Web又分为Web1.0和Web2.0。Web1.0是指2003年以前的互联网模式。Web2.0是相对Web1.0而言的新一类互联网应用的统称,是一次从核心内容到外部应用的革命。1.1Web1.0和Web2.0在Web1.0时代,用户都是单纯通过浏览器来浏览HTML网页。而Web2.0时代,网络向一种内容更加丰富、联系性更强、工具性更强的互联网模式开展,并且Web2.0已经称为网络开展趋势。严格来说,本来并没有Web1.0这一个概念。只不过为了说明新的互联网技术和应用特性,在推出Web2.0概念时才有了Web1.0这一个概念。Web2.0是相对于Web1.0而言的,是指2003年以后的网络模式。目前来说,并没有Web2.0的严格定义。通常,人们采用Web2.0的典型网站案例介绍加上对Web2.0局部技术的解释来描述Web2.0。1.2Web2.0的主要应用元素Web2.0正在让互联网逐渐找回Internet的真正含义:平等、交互、中心化。互联网上的每一个用户不应该仅仅是互联网的读者,同时也应该为互联网的作者;不应该仅仅是在互联网上冲浪,同时也应该是波浪制造者。自从2003年以来,Web2.0中的各种应用元素开展起来。他们恰恰反响了Web2.0的特征,这些应用元素主要如下:博客〔Blog,包含文字、声音、图像、视频,让个人成为主体〕;RSS〔简易聚合〕;1.3目前流行的Web2.0网站目前来说,属于Web2.0的网站比较多。其中,Web2.0网站集合网站〔〕收集了目前比较流行的Web2.0网站。Web2.0网站集合网站,如图1.1所示。豆瓣网〔〕是目前最为流行的Web2.0网站之一,如图1.2所示。在豆瓣网上,用户可以对自己想看、在看、看〔听〕过的书、电影和音乐标注、分类、评论。豆瓣网会根据用户的口味,从百万种书、电影、音乐中挑出用户最可能感兴趣的。第2章ASP.NETWeb窗体页彻底透析ASP.NETWeb窗体页文件的扩展名为“.aspx〞。创立一个Web窗体页方法很简单:用户只需将现有的HTML文件的文件扩展名修改为“.aspx〞即可,不需要修改该文件的任何代码。这一小节将详细介绍Web窗体页相关内容,如ASP.NET指令、Web窗体页语法、Web窗体页运行过程等。2.1ASP.NET指令ASP.NET指令是以字符“@〞开头。分析器或编译器在分析或编译页〔包括窗体页和母版页〕、用户控件或其他资源文件时,页、控件或文件可以通过ASP.NET指令指定编译器的属性。当分析器或编译器在处理页、控件或文件时,这些设置生效。通常,这些指令需要包含在页、控件或文件的开头处。每个指令都可以包含一个或多个属性〔与值成对出现〕。2.1.1页指令@Page分析器或编译器在分析或编译页时,可以通过@Page指令设置分析器和编译器的属性。该指令只能包含在文件扩展名为.aspx的文件中,声明其语法如下:<%@Pageattribute="value"[attribute="value"...]%>@Page指令只能使用在Web窗体页〔.aspx〕中,且每个页只能包含一条@Page指令。当Web窗体页使用该指令时,它至少要包含一个属性。2.1.2用户控件指令@Control分析器或编译器在分析或编译用户控件〔.ascx〕时,可以通过@Control指令设置分析器和编译器的属性。该指令只能在用户控件上使用,且一个用户控件只能包含一条@Control指令。声明@Control指令的语法如下:<%@Controlattribute="value"[attribute="value"...]%>2.1.3注册指令@Register@Register指令提供了引用用户控件或自定义控件的方法,并引用这些控件的文件〔页或者控件〕能够使用被引用的控件。换句话说,该指令创立一个标记前缀,实现被引用的控件和其引用文件之间的关联。最终,使得控件能够在其引用文件中呈现出来。2.1.4引用指令@Reference@Reference指令将指定的页或用户控件链接到当前页或用户控件,即在指定的页或用户控件和当前页或用户控件之间建立动态连接。声明该指令的语法如下:<%@ReferencePage="页的路径"Control="用户控件的路径"virtualPath="文件的虚拟路径"%>2.1.5母版页指令@Master分析器或编译器在分析或编译母版页〔.master〕时,可以通过@Master指令设置分析器和编译器的属性。该指令只能在母版页上使用,且一个母版页只能包含一条@Master指令。声明@Master指令的语法如下:<%@Masterattribute="value"[attribute="value"...]%>2.1.6母版页类型指令@MasterType@MasterType指令提供创立对该母版页〔.master〕的强类型引用的方法。声明该指令的语法如下:<%@MasterTypeattribute="value"[attribute="value"...]%>@MasterType指令包含两个属性:TypeName和VirtualPath。其中,TypeName属性指定母版页的类型的名称;VirtualPath属性指定生成强类型引用的文件的路径,它的值为相对路径。2.1.7上一页类型指令@PreviousPageType@PreviousPageType指令提供了获取上一页〔当前页的Page对象的PreviousPage属性的值〕的强类型的方法。它只能使用在Web窗体页〔.aspx〕上,声明该指令的语法如下:<%@PreviousPageTypeattribute="value"[attribute="value"...]%>@PreviousPageType指令包含两个属性:TypeName和VirtualPath。其中,TypeName属性指定上一页的类型的名称;VirtualPath属性指定生成强类型引用的文件的路径,它的值为相对路径。一般情况下,TypeName和VirtualPath属性不能同时使用。下面的代码例如设置了生成强类型的文件的VirtualPath属性的值为“~/OtherPreviousPageType.aspx〞。<%@PreviousPageTypeVirtualPath="~/OtherPreviousPageType.aspx"%>2.1.8输出缓冲指令@OutputCache@OutputCache指令设置Web窗体页或用户控件的输出缓存策略。2.1.9导入指令@Import@Import指令将命名空间导入到文件中,使得该文件可以使用导入的命名空间中的类和接口。它不但可以导入.NET框架类库中的命名空间,而且可以导入用户自定义的命名空间。声明该指令的语法如下:<%@Importnamespace="value"%>2.1.10程序集指令@Assembly@Assembly指令将程序集〔.dll〕链接到当前页,使得当前页可以使用程序集中的类和接口。声明该指令的语法如下:<%@AssemblyName="assemblyname"%><%@AssemblySrc="pathname"%>2.1.11执行指令@Implements@Implements指令指定当前文件〔如Web窗体页、用户控件等〕需要实现的.NET框架类库中的接口。如果用户在文件中需要实现接口时,用户必须在<script>标记中实现接口所需要的方法和属性。假设文件需要实现多个接口,那么可以在该文件上屡次使用@Implements指令。@Implements指令只包含一个属性:interface。该属性表示当前文件需要实现的接口的名称。声明@Implements指令的语法如下:<%@Implementsinterface="MyValidInterfaceName"%>2.2Web窗体页语法Web窗体页不但可以包括静态内容,而且可以包含使用“<%%>〞或“<script></script>〞标记的内容。这些标记使用不同的语法结构,其具体包括如下:代码呈现块和代码声明块语法。效劳器控件语法〔包括HTML效劳器控件和Web效劳器控件〕。声明性表达式语法。数据绑定表达式语法。2.2.1代码声明和代码呈现语法代码声明块必须定义在<script>标记中,并且必须使用“runat=server〞属性进行标记。代码声明块语法如下:<scriptrunat="server"language="codelanguage"Src="pathname">代码...</script>2.2.2效劳器控件语法效劳器控件语法包括Web效劳器控件语法和HTML效劳器控件语法。其中,Web效劳器控件能够动态生成HTML用户界面〔UI〕并响应客户端请求。声明这些控件的语法如下:<tagprefix:tagnameid="OptionalID"attributename="value"eventname="eventhandlermethod"runat="server"/>2.2.3声明性表达式语法声明性表达式语法是ASP.NET2.0新增的语法,它可以在分析Web窗体页之前将表达式的值替换到页中。使用声明性表达式可以获取配置文件Web.Config中连接字符串的值,也可以从资源文件中获取当前本地化的值。声明性表达式语法如下:<%$表达式%>2.2.4数据绑定语法数据绑定表达式能够将控件属性绑定到数据容器值。其通常放置在“<%#…%>〞标记元素之中。当其父控件的DataBind()方法被调用时,将计算标记中表达式的值。其中,数据绑定表达式可以包含在效劳器控件的“属性/值〞对的值一侧,也可以放置在Web窗体页中的任何位置。2.2.5对象标记语法对象标记语法能够在Web窗体页中声明或创立COM或.NETFramework中的对象,即声明或创立变量的实例。效劳器端对象标记语法存在3种方式,2.2.6效劳器端包含语法效劳器端包含语法能够将指定文件的内容包含或插入到文件中。它的语法如下:<!--#includefile|virtual="filename"-->其中,file和virtual是一对互斥属性。file属性指定被包含文件的的物理路径;virtual属性指定被包含文件的虚拟路径。下面的代码例如介绍了包含名称为MyScript.js的脚本文件的方法。<!--#IncludeFile="MyScript.js"-->2.2.7效劳器端注释语法效劳器端注释语法允许将代码注释,或内容嵌入到Web窗体页,或用户控件的任何位置〔除了被<script>标记元素标记的代码块内部〕。被注释的代码或内容将不被执行或呈现。效劳器端注释语法如下:<%--注释的内容或代码--%>2.2.8内联代码别离和代码隐藏别离方式ASP.NET提供了两种组织Web窗体页中代码的方式:内联代码别离方式和代码隐藏别离方式。用户在创立Web窗体页时,可以设置页的代码组织方式,如图2.6所示。如果用户选中了【将代码放在单独的文件中】复选框,那么页的代码组织方式为代码隐藏别离方式,否那么为内联代码别离方式。2.3Web窗体页运行过程当ASP.NETWeb应用程序运行时,每一个被请求的Web窗体页都将经历一个运行过程〔即生命周期〕。在该运行过程中,ASP.NET将对Web窗体页进行一系列的处理步骤,如页请求、初始化页面、载入页面、处理事件、预呈现页面、呈现页面、卸载页面等。2.3.1初始化页面一旦某一个Web窗体页发生请求时,ASP.NET将首先确定是否要分析和编译该页,即确定该页的请求是全新的请求还是回发请求〔由页的IsPostBack属性指定〕。如果该页从来没有被请求,分析器和编译器将分析和编译该页。否那么将使用该页已经编译好的代码。经过上述阶段之后,页将进入初始化阶段。在此过程中,页将创立其的所有对象,并初始化对象的值;同时初始化该页包含的控件〔效劳器端控件和客户端控件〕,并将主题〔Themes〕应用于页。在此过程中,页将触发两个事件:Page_PreInit和Page_Init事件。2.3.2载入页面Web窗体页初始化之后,ASP.NET分析器或编译器将载入页。在此过程中,如果当前请求是回发请求〔不是第一次请求〕,那么读取页和控件的视图状态〔ViewState〕中读取其状态,并将状态的值应用到页和控件。在此过程中,页将触发Page_Load事件。该事件读取并更新控件属性。2.3.3处理事件Web窗体页载入之后,将处理页的回发事件。在此过程中,如果当前请求是回发请求〔不是第一次请求〕,那么将触发页或控件的定义的事件处理程序。如Button控件的Click事件等。注意:在处理回发事件之前,如果页包含了需要执行验证操作的控件,那么页首先检查页和各个验证控件的IsValid属性是否为true。如果为true,那么处理回发事件,否那么行处理回发事件。2.3.4预呈现页面Web窗体页处理回发事件之后,将预呈现页面。在此过程中,页将执行其被呈现之前的处理步骤。此时,页将触发Page_PreRender事件。注意:该事件是对页的内容进行最后修改。2.3.5呈现页面Web窗体页预呈现之后,将开始呈现页面。在此过程中,页首先保存页及其控件的视图状态〔ViewState〕。即把视图状态的值序列化为一个字符串。该字符串将被作为页的一个隐藏域,并保存到页的HTML代码中。处理视图状态之后,页将创立页的HTML代码,并输出到客户端浏览器。其中,输出过程由页的Response对象的OutputStream属性实现。2.3.6卸载页面Web窗体页的最后一个阶段——卸载页面,当页面被释放时发生。在该阶段中,页将执行最后的清理工作,释放页占用的资源等。最典型的操作是关闭翻开的文件或数据库的连接。在此过程中,页将触发Page_Unload事件。该事件将执行以下操作:关闭翻开的文件。关闭翻开的数据库连接。完成日志。完成或其他特定的任务。2.3.7验证页面运行过程下面的代码实例在Default.aspx页面中,定义了页面运行过程中的4个常用事件,具体如下:protectedvoidPage_Init(objectsender,EventArgse),在初始化页面时发生。protectedvoidPage_Load(objectsender,EventArgse),在载入页面时发生。protectedvoidPage_PreRender(objectsender,EventArgse),在页面预呈现时发生。第3章ASP.NET根本对象和配置本章将介绍ASP.NET根本对象和配置。其中,根本对象包括Response、Request、Server、Application、Session和ViewState。ASP.NET配置主要包括配置文件Web.Config、配置架构、读取配置等内容。另外,本章还介绍了全局文件Global.asax等内容。3.1Response和Request对象Response和Request是ASP.NET的重要对象。其中,Request对象提供对当前页请求的访问,用于效劳器和客户端交互数据。它表示客户端向效劳器发送的HTTP请求,并且够读取客户端在Web请求期间发送的HTTP值。Response对象用于动态响应客户端的请求,并将响应的结果返回到客户端浏览器,最终将响应结果在浏览器输出。3.1.1Request对象的属性和方法Request对象提供对当前页请求的访问,并能够读取当前请求的HTTP值。这些值包括请求标题、Cookie、客户端证书、查询字符串等。Request对象的类型为HttpRequest。其中,HttpRequest类提供了ASP.NET读取客户端的HTTP请求信息的方法和属性。Web窗体页的Page对象通过其Request属性获取当前页的HttpRequest类的实例。3.1.2Response对象的属性和方法Response对象用于响应客户端的请求。它可以将请求动态生成的响应结果,并返回到客户端浏览器。另外,该对象还可以访问当前页的输出流〔OutputStream〕、发送信息到浏览器、或者重定向到浏览器或另外一个URL等。Response对象的类型为HttpResponse。其中,HttpResponse类封装了对当前Web请求的HTTP响应信息。Web窗体页的Page对象通过Response属性获取当前页的HttpResponse类的实例。3.1.3输出文本和HTML代码Response对象提供了向页面直接输出文本和HTML代码的方法Write()。它的原型如下:publicvoidWrite(charch),输出一个字符。publicvoidWrite(objectobj),输出一个对象。publicvoidWrite(strings),输出一个字符串。publicvoidWrite(char[]buffer,intindex,intcount),输出一个字符数组。3.1.4输出图像Response对象提供了向页面直接输出图像或文件的方法。其中,输出图像是通过输出该图像的二进制数据实现的。实现方法为BinaryWrite(),它的原型如下:publicvoidBinaryWrite(imageData)(byte[]data),输出一个二进制数组。下面的代码实例向OutImage.aspx页面上输出一个图像文件xpbz0075.jpg〔该文件保存在Images目录下〕。3.1.5重定向页面Response对象提供了重定向页面的方法Redirect()。它可以将当前请求重定向到其他页面或URL。该方法的原型如下:publicvoidRedirect(stringurl)。publicvoidRedirect(stringurl,boolendResponse)。3.1.6页面间的参数传递Response和Request对象共同可以实现传递页面间的参数的功能。其中,Response对象调用Redirect()方法将参数值保存在地址栏〔URL〕中,并传递到目的页面。另外,接收参数的目的页面从Request对象的Params属性中获取传递过来的参数。在下面的代码实例中,用户可以在源页面SrcParam.aspx中输入被传递的参数,然后单击【重定向到Dir.aspx页面】按钮,那么重定向到DirParam.aspx页面,并把参数传递到该页面。DirParam.aspx页面将从Request对象的Params属性中获取传递过来的参数,并输出在页面上。3.1.7获取上载文件集合FilesRequest对象的Files属性保存当前Web窗体页请求中的所有文件。该属性是一个集合,集合中的每一个元素的类型为HttpPostedFile。注意:如果需要Request对象的Files属性保存Web窗体页请求中的所有文件,那么必须把当前页的Form的enctype属性的值设置为“multipart/form-data〞。HttpPostedFile类提供了描述上载文件的属性和处理文件的方法。其中,该类仅提供了一个静态方法SaveAs(),它可以将文件保存到效劳器。3.1.8Params、QueryString、Form、ServerVariables和Cookies集合Request对象中的Params、QueryString、Form、ServerVariables、Cookies属性都是集合。其中,Params属性是由QueryString、Form、ServerVariables、Cookies组成的集合,它保存了当前请求中的HTTP信息。Form属性保存了客户端的表单信息;ServerVariables属性保存了当前请求中效劳器变量的信息。上述这些属性的类型都为NameValueCollection,集合中的项都是由“名称/值〞对组成。3.1.9获取上一页地址Response和Request对象共同可以实现获取上一页地址、并返回上一页的功能。其中,当前页的上一页的地址保存在其Request对象的UrlReferrer属性中。在下面的代码实例中,用户单击上一页面SrcPage.aspx中的【下一页】按钮,重定向到DirPage.aspx页面。该页面在第一次请求中从其Request对象的UrlReferrer属性中获取上一页地址,并保存在ViewState对象〔视图状态〕中。用户单击【返回上一页】按钮,将从ViewState对象中获取上一页地址,并返回到上一页。3.1.10获取客户端信息Request对象的Browser属性中保存了客户端的信息,如客户端的浏览器类型、版本、操作系统平台等。在下面的代码实例中,ClientInfo.aspx页面使用反射机制〔Reflection〕输出了客户端所有信息〔保存在Browser的属性中〕及其值。3.2Server对象Server对象提供了访问效劳器对象的方法和属性,用于处理当前请求的助手。其公开Web窗体页之间传输的实用工具。3.2.1Server对象的属性和方法使用Server对象可以处理当前请求。如获取效劳器的名称、当前请求的超时长度、最近的错误信息、对HTML文本进行编码和解码、对URL进行编码和解码等。Server对象的类型为HttpServerUtility。Web窗体页的Page对象通过Server属性来获取当前页的HttpServerUtility类的实例。3.2.2HTML、URL编码和解码Server对象提供了对HTML和URL进行编码和解码的方法。其中,HtmlEncode()方法可以对文本进行HTML编码;HtmlDecode()方法可以对已HTML编码文本进行解码。如果需要在Web窗体页中显示HTML字符,那么应该对输出的字符串进行HTML编码。UrlEncode()方法可以对URL进行URL编码。如果URL中存在中文字符时,该方法可以对URL进行编码,并消除因URL中存在中文而产生的危险。UrlDecode()方法可以对已URL编码的URL进行解码。3.2.3映射虚拟地址Server对象的MapPath()方法能够将ASP.NET应用程序的虚拟地址映射为其相对应的物理地址。它的原型为publicstringMapPath(stringpath)。其中,参数path指定被映射的虚拟路径。下面的代码实例将应用程序Sample_03_02的根的虚拟路径映射为其相对应的物理路径,并把该物理路径输出到MappathUrl.aspx页面上。3.2.4重定向页面和Response对象一样,Server对象提供了重定向页面的方法:Transfer()和Execute()。他们的原型如下:publicvoidTransfer(stringpath)。publicvoidTransfer(stringpath,boolpreserveForm)。publicvoidTransfer(IHttpHandlerhandler,boolpreserveForm)。publicvoidExecute(Stringpath)。3.2.5获取并处理异常Server对象的GetLastError()方法可以获取当前请求中的最新的异常;可以去除当前请求中的所有异常。下面的代码实例获取了当前请求中的最新的异常,如果异常不为空,那么输出异常信息。最后调用ClearError()方法去除当前请求中的所有异常。3.3Application、Session和ViewState对象Application、Session和ViewState对象是ASP.NET提供的3种状态对象。它们保存的状态信息分别在应用程序级别、用户根本、页面级别之间共享。3.3.1Application对象的属性和方法Application对象提供了对整个应用程序共享的全局信息进行访问,即提供了对应用程序的方法和事件的访问。同时,该对象还可以用于存储应用程序的全局信息。该对象的类型为HttpApplicationState。该类提供了应用程序中的会话和请求之间的全局信息共享功能,3.3.2Session对象的属性和方法Session对象为用户提供客户端和效劳器之间的会话信息。当用户第一次访问应用程序〔网站〕时,应用程序将在效劳器和该用户之间创立一个会话,并且设置该会话具有惟一的ID值。Session对象只能被它所属的用户使用,它的类型为HttpSessionState。该类提供对管理会话信息的属性和方法。3.3.3ViewState对象的属性和方法ViewState对象可以用来保存同一页在多个请求之间的值。特别地,Web窗体页可以使用该对象保存页或者控件的状态值。Web窗体页将ViewState对象的值散列为一个字符串,并保存在页的隐藏域中。ViewState对象仅仅属于一个Web窗体页,且在该页重新提交到效劳器之前有效。ViewState对象的类型为StateBag。3.3.4保存网站数据下面的实例代码将网站的数据保存到Application对象中。其中,被保存的数据是一个字符串“这是网站的数据〞。3.3.5保存用户数据下面的实例代码将某一个用户的数据保存到Session对象中。其中,被保存的数据是一个字符串“这是一个用户的数据〞。3.3.6保存页面数据下面的实例代码将某一个Web窗体页的数据保存到ViewState对象中。其中,被保存的数据是一个字符串“这是当前页面的数据〞。3.3.7Application和Session对象的事件ASP.NET为Application对象提供了三个事件,为Session对象提供了两个事件。这些事件都放置在应用程序的Global.asax文件中。其中,Application对象的事件如下:〔1〕voidApplication_Start(objectsender,EventArgse),在Application对象创立时发生。〔2〕voidApplication_End(objectsender,EventArgse),在Application对象结束时发生。〔3〕voidApplication_Error(objectsender,ventArgse),当Application对象发生错误时时发生。3.4配置ASP.NET应用程序ASP.NET应用程序的配置文件是一个名称为Web.Config的XML文件。它可以用来配置ASP.NETWeb应用程序的行为和状态。注意:一个ASP.NETWeb应用程序可以拥有多个Web.config文件。3.4.1默认配置文件Web.Config一般情况下,ASP.NET应用程序会提供了一个默认的配置文件Web.Config。如果应用程序没有提供该文件,用户可以手动添加该文件。操作步骤如下:〔1〕在该应用程序的【解决方法资源管理器】面板中,右击应用程序的根节点,单击【添加新项(W)…】命令。弹出【添加新项-:\Web2.0ASP.NET2.0\ch03\Sample_03_04\】对话框,选择【Web配置文件】图标,〔2〕单击【添加(A)】按钮,可以向Sample_03_04应用程序添加配置文件Web.Config。3.4.2ASP.NET配置架构.NETFramework为ASP.NET应用程序提供了一个称为ASP.NET配置架构的典型配置结构。它的根元素为<system.web>,并包含下面两种类型的配置元素:配置ASP.NETWeb应用程序的元素。控制ASP.NETWeb应用程序的行为的元素。ASP.NET配置架构提供了多个与ASP.NET应用程序相关的配置元素,如用于身份验证的<authentication>元素、用于身份授权的<authorization>元素、配置编译ASP.NET应用程序时的设置的<compilation>元素等。下面实例代码列举了ASP.NET配置架构包括的所有配置元素。3.4.3常用配置元素ASP.NET应用程序的默认配置文件Web.Config提供了5种配置元素:<appSettings>、<connectionStrings>、<compilation>、<authentication>和<customErrors>。下面仅介绍前面两种元素的配置。3.4.3读取配置文件.NETFramework提供了专门用来处理Web应用程序的配置文件Web.Config的类,名称为WebConfigurationManager〔包含在命名空间中〕。该类提供了两个静态属性:AppSettings和ConnectionStrings。其中,AppSettings属性用来获取<appSettings>元素的配置;ConnectionStrings属性用来获取<connectionStrings>元素的配置。另外,WebConfigurationManager类还提供了专门处理配置文件Web.Config的方法,3.5Global.asax文件Global.asax文件又称为ASP.NET全局文件或应用程序文件。该文件提供了响应HTTP模块的事件。这些事件包括两个级别:应用程序级别和会话级别。注意:Global.asax文件是ASP.NETWeb应用程序的可选文件。特别地,外部用户不能查看该文件的内容或下载该文件。3.5.1默认全局文件Global.asax一般情况下,ASP.NET应用程序会提供了一个全局文件Global.asax。如果应用程序没有提供该文件,用户可以手动添加该文件。操作步骤如下:〔1〕在该应用程序的【解决方法资源管理器】面板中,右击应用程序的根节点,单击【添加新项(W)…】命令。弹出【添加新项-D:\Web2.0ASP.NET2.0\ch03\Sample_03_05\】对话框,选择【全局应用程序类】图标,〔2〕单击【添加(A)】按钮,可以向Sample_03_05应用程序添加全局文件Global.asax。3.5.2Global.asax文件语法Global.asax文件语法主要:应用程序指令、代码声明块、静态属性和包含文件。下面对其指令作详细介绍。1.应用程序指令应用程序指令主要包括:@Application、@Import和@Assembly。第一个指令只能在Global.asax文件中使用,它定义了了Global.asax文件的特定属性。这些属性将被分析和编译Global.asax文件的分析器和编译器使用。声明该指令的语法如下:<%@Applicationattribute="value"[attribute=value…]%>3.5.3Global.asax文件中的事件Global.asax文件包含了许多由ASP.NET定义的各种事件。这些事件功能处理Web窗体页的请求、回发、验证等操作,如BeginRequest、EndRequest等事件。3.5.4统计系统在线人数下述代码实例统计网站被访问的次数。并在Default.aspx页面上输出统计的次数。其中,每当Default.aspx页面被访问一次时,计数器加一。该计数器为定义在Global.asax文件中的静态变量WebViewCount。第4章SQLServer数据库和ADO.NET本章主要介绍SQLServer数据库快速入门的根本知识和ADO.NET的根本内容。其中,SQLServer数据库快速入门的内容包括数据库根本对象、SQLServer2005管理平台、SQL语句、SQL常用函数。ADO.NET的根本内容包括连接SQLServer数据库、读取数据、添加数据、修改数据、删除数据、填充数据、过滤数据等。4.1SQLServer2005快速入门数据库〔Database〕是按照一定的结构组织数据、并把数据及其关系存储在计算机中的一组相关数据的集合。通常,这种数据可以被各种不同的用户共享。MicrosoftSQLServer2005就是一个典型的数据库,它是基于MicrosoftSQLServer2000的强大功能之上,提供了一个完整的数据管理和分析解决方案。MicrosoftSQLServer2005包括的主要组件或技术如下:SQLServer数据库引擎,它提供用于存储、处理和保护数据的核心效劳。4.1.1数据库根本对象MicrosoftSQLServer2005数据库是由表集合、表上的控制集合,以及对数据库中数据执行的操作集合组成。表是数据库中最根本的对象,它按照一定的结构来组织和存储数据;表上的控制用于保证数据的有效性和完整性,这些控制包括约束、索引、触发器、关系图、默认值、自定义用户数据类型等。下面介绍SQLServer2005数据库的常用对象,如表、视图、存储过程、函数、索引、触发器等。4.1.2SQLServer管理平台如果读者安装了MicrosoftServer2005,那么可以执行【开始】|【所有程序】|【MicrosoftSQLServer2005】|【SQLServerManagementStudio】命令。翻开【MicrosoftSQLServerManagementStudio】窗口,4.1.3SQL语句SQL又称为结构化查询语言,它是StructureQueryLanguage的简称。SQL不仅仅是一个标准的数据库语言,而且还面向集合的描述性非过程化语言。使用SQL可以完成数据查询、数据定义、数据操作、数据控制等操作。SQL主要包括SELECT、FROM、WHERE、INSERTINTO、UPDATE、INTO、GROUPBY、HAVING、ORDERBY、DELETE、UNION等子句。其中,SELECT子句指定被选择表或视图的属性。FROM子句指定SELECT子句所选择的属性所属的表或视图。WHERE子句指定SELECT和FROM子句的约束条件。4.1.4SQL常用函数SQL语言包括了一些常用函数,如聚合函数〔COUNT、AVG、SUM、MAX、MIN等〕、时间函数〔GETDATE等〕、字符串函数〔SUBSTRING、UPPER、LOWER等〕等。下面将介绍这些函数的语法。4.2ADO.NETADO.NET是.NETFramework中的很重要的一局部。其提供了对MicrosoftSQLServer等数据源,以及通过OLEDB、XML公开的数据源的一致访问。应用程序〔如ASP.NET应用程序〕可以通过ADO.NET来连接这些数据源,并检索〔选择〕、插入、修改和删除数据源中的数据。ADO.NET由两大类型的组件组成:数据集〔DataSet〕和.NETFramework数据提供程序。其中,在.NET框架中,称处理数据的应用程序为.NETFramework数据提供程序或托管提供程序。另外,ADO.NET中的对象可以分为连接对象和非连接对象。连接对象是指那些需要保持与数据库的连接才能够使用的对象。这些对象包括Connection、Command、DataReader和DataAdapter对象。非连接对象主要包括数据集、数据表等。4.2.1连接SQLServer数据库在ADO.NET中,DbConnection类专门用来连接数据库或数据源。ADO.NET为不同的数据库或数据源提供了相应的连接类:SqlConnection、OdbcConnection、OleDbConnection和OracleConnection类。这些类都继承于DbConnection类。其中,SqlConnection类用于连接基于SQL关系的数据库;OdbcConnection类用于连接ODBC数据源;OleDbConnection类用于连接OLEDB类型的数据源;OracleConnection类用于连接Oracle数据库。4.2.2读取数据使用SqlDataReader对象可以从数据源中读取或检索数据。该对象提供一种向前的、行流的、读取数据的方式。该对象在读取数据时,必须一直保持与数据库的连接。该对象具有以下5个重要特征:只能读取数据,不能对数据执行修改或删除等操作。只能以前进的方式读取数据,不能再次访问已经被访问的数据。直接把数据传递给页面中的对象,即不能缓存正在读取的数据。4.2.3添加、修改和删除数据SqlCommand对象不但可以获取数据,而且可以对数据执行添加、更新、删除等操作。上述功能由该对象的ExecuteNonQuery()方法实现,它执行Transact-SQL语句或存储过程并返回受影响的行数。下面的代码实例定义了分别执行添加、更新和删除操作的SQL语句。4.2.4调用存储过程SqlCommand对象不但可以执行Transact-SQL语句,而且还可以执行存储过程。注意:默认情况下,SqlCommand对象执行Transact-SQL语句。如果SqlCommand对象要执行存储过程,那么把该对象的CommandType属性的值设置为“CommandType.StoredProcedure〞即可。此时,该对象把它的CommandText属性的值解释为存储过程的名称。4.2.5存储过程的参数SqlCommand对象不但可以执行存储过程,而且还可以为存储过程添加参数。其中,存储过程的参数保存在SqlCommand对象的Parameters属性中。它是一个集合,集合中元素的类型为SqlParameter。SqlParameter类的属性如表4-10所示。4.2.6填充数据集数据集〔DataSet〕是ADO.NET在内存中处理数据的一种新机制。它提供了一种断开式的数据访问机制。它是数据驻留在内存中的一种表示形式。数据集中的数据可以看成数据存储器的局部数据的本地副本,并可以对这些数据执行检索〔选择〕、插入、修改、删除等操作。数据集可以包括多个对象,4.2.7过滤数据集如果要过滤数据集或数据表中的数据,可以通过他们的数据视图〔DataView〕实现。数据视图可以对DataTable对象或DataSet中的数据进行筛选〔过滤〕、排序、搜索、编辑、导航等操作。4.2.8数据集和XML转换在ADO.NET中,可以轻松实现把数据集中的的数据转换为XML格式的数据,以及把XML格式的数据轻松填充到数据集。其中,把数据集中的的数据转换为XML格式的数据由方法GetXml()方式。它返回数据集中的的数据的XML片段。下面的代码实例首先从数据库WEB2ASPNET2DB的用户表User中获取数据,并保存到数据集对象ds中;然后把该对象中的数据转换为XML格式的数据。最后,在当前网页上输出该XML片段。第5章数据效劳控件ASP.NET数据效劳提供了Web窗体页和数据源〔或数据库〕之间的数据交互功能。其中,数据效劳功能主要包括数据绑定技术、数据源控件、数据控件〔如Repeater、DataList、GridView、DetailsView、FormView等控件〕。5.1数据绑定技术在ASP.NET中,效劳器控件可以直接与数据源进行交互〔如显示或修改数据〕。ASP.NET称这种技术为数据绑定技术。它可以把Web窗体页〔包括其控件或其他元素〕和数据源无缝地连接到一起,增强了页与数据源的交互能力。数据绑定技术可以分为简单数据绑定技术和复杂数据绑定技术。5.1.1简单数据绑定技术简单数据绑定技术能够将控件的属性绑定到数据源中的某一个值,并且这些值将在页运行时确定。简单数据绑定技术包括了数据绑定表达式和DataBind()方法两局部内容。1.数据绑定表达式语法2.DataBind()方法5.1.2复杂数据绑定技术复杂数据绑定技术能够将一组或一列值绑定到指定的控件。这些控件通常被称为数据绑定控件,如ListBox、DropDownList、Repeater、GridView等控件。其中,这些数据绑定控件可以分为两类:列表控件和和迭代控件。其中,迭代控件包括Repeater、DataList和GridView等控件〔这些控件将在后面进行详细介绍〕。列表控件包括5个控件:BulletedList、CheckBoxList、RadioButtonList、ListBox和DropDownList。它们都是从BaseDataBoundControl类派生。然而,列表控件并不是直接派生于BaseDataBoundControl类,而是直接派生于ListControl类。并且,ListControl类直接继承于DataBoundControl类。DataBoundControl类直接继承于BaseDataBoundControl类。5.1.3Eval和Bind方法Eval()和Bind()方法是数据绑定时两种重要方法。其中,Eval()方法定义在DataBinder类中。该类用来生成和分析数据绑定表达式语法。5.2数据源控件ASP.NET2.0新增了一种被称为数据源控件的控件。这些控件不但可以使用数据库〔如SQLServer、Access、Oracle等〕、XML文件或中间层业务对象作为数据源;而且还可以连接到数据源,并从其中检索和修改数据。数据源控件共包括五个控件:SqlDataSource、AccessDataSource、ObjectDataSource、SiteMapDataSource和XmlDataSource控件。其中,前三个控件使用平面数据源,后两个控件使用层次数据源。5.2.1访问SQL数据——SqlDataSourceSqlDataSource数据源控件可以使用MicrosoftSQLServer、ODBC、OLEDB、Oracle等基于SQL关系的数据库作为数据源。使用MicrosoftSQLServer数据库时,该控件还提供与数据缓存功能。另外,该控件还支持对数据进行选择、插入、更新、修改、排序、分页、缓存等功能。5.2.2访问Access数据源——AccessDataSourceAccessDataSource控件可以检索MicrosoftAccess数据库〔文件后缀名为.mdb的文件〕中的数据。同时,该控件也支持排序、筛选、分页等功能。注意:AccessDataSource控件继承于SqlDataSource控件。5.2.3访问对象数据源——ObjectDataSourceObjectDataSource控件可以使用自定义的业务对象、类或业务逻辑组件,它可以从这些对象、类或接口中检索数据。ObjectDataSource控件的功能非常强大,它提供了检索、更新、删除、插入、排序、过滤、分页、缓存等功能。5.2.4访问XML数据源——XmlDataSourceXmlDataSource控件使用层次结构〔如XML文件等〕的数据源,它的数据源往往是一个XML文件。注意:XmlDataSource控件特别适合用于分层的效劳器控件,如TreeView、Menu等控件。XmlDataSource控件提供了两种显示数据的方式:分层显示和表格显示。它提供了检索、更新、插入、删除、缓存等功能〔其中,更新、插入、删除操作需要Save()方法支持〕。然而,其最常用的方法是用于显示分层数据,且不能修改被显示的数据。5.2.5访问站点地图数据源——SiteMapDataSourceSiteMapDataSource控件使用站点地图〔后缀名为.sitemap的文件,该文件也是一个XML格式的文件〕文件作为数据源。它能够从站点地图提供程序中检索导航数据,然后将数据传递给可显示该数据的控件。5.3重复控件Repeater和数据列表控件DataList本小节介绍ASP.NET中两个数据迭代控件:Repeater和DataList控件。其中,Repeater控件又被称为重复控件;DataList控件又被称为数据列表控件。它们都可以以表格形式显示数据。5.3.1Repeater控件概述Repeater控件是一个数据容器控件,它能够以表格形式显示数据源的数据。假设该控件的数据源为空,那么什么都不显示。该控件允许用户创立自定义列,并且还能够为这些列提供布局。然而,Repeater控件本身不提供内置呈现功能。假设该控件需要呈现数据,那么必须为其提供相应的布局。5.3.2DataList控件概述DataList控件也是一种迭代控件。它不但可以以某种格式重复显示数据,而且还能够将样式应用这些数据。另外,DataList控件还可以控制数据显示的方向。和Repeater控件一样,DataList控件也支持模板,并且还为这些模板提供相应的样式。DataList控件提供了5个静态只读字段。它们分别表示选择、编辑、更新、取消和删除命名的名称,5.3.3Repeater控件的模板Repeater控件支持5种模板:HeaderTemplate、FooterTemplate、AlternatingItemTemplate、ItemTemplate和SeparatorTemplate。5.3.4DataList控件的模板DataList控件支持七种模板:HeaderTemplate、FooterTemplate、AlternatingItemTemplate、ItemTemplate、EditItemTemplate、SelectedItemTemplate和SeparatorTemplate。5.3.5获取CommandArgument属性的值按钮控件〔如Button、ImageButton、LinkButton等〕包括两个属性:CommandArgument和CommandName。其中,第一个属性用来保存操作所需要的参数,第二个属性用来保存执行操作的标识。注意:CommandArgument和CommandName属性一般应用在控件的Command事件中。5.3.6应用DataKeyField属性DataList控件的基类BaseDataList提供了与数据源键值相关的DataKeyField和DataKeys属性。其中,DataKeyField属性指定DataList控件的数据源中的键字段。DataKeys属性为一个集合,它保存DataList控件中每一个记录的键值。通过DataKeys属性,可以访问DataList控件中每一行记录的键值。下面的代码实例获取了DataList控件中的DataKeys属性中的每一行的键值,并显示在名称为lbIDValue的控件中。5.3.7DataList控件的事件DataList控件提供了与行行为,以及对行的数据进行选择、编辑、更新、删除等操作相关的事件,5.4网格视图控件GridViewGridView控件又称为网格视图控件,它能够以数据网格形式显示数据,并能够对这些数据进行编辑、排序、分页、自定义样式等操作。5.4.1GridView控件概述GridView控件是可以显示、编辑、排序、分页、删除其数据源中的数据。其中,这些数据源可以是数据库〔如SQLServer、Access、Oracle等〕、XML文件、公开数据的业务对象等。GridView控件能够实现如下所示:显示数据,即把数据源绑定到控件。行选择功能。编辑数据,包括更新和删除数据等。5.4.2GridView控件的模板和行GridView控件支持两种模板:EmptyDataTemplate和PagerTemplate。当GridView控件的数据源为空时,控件显示第一个模板的内容〔如果定义了该模板〕。PagerTemplate模板定义了GridView控件的与页导航相关内容的模板。DataList控件称它的数据行为“Item〞。但是,GridView控件称它的数据行为“Row〞。GridView控件也包含了与DataList控件相对应的行,如HeaderRow、FooterRow、SeletedRow等。同时,GridView控件还定义了行的样式,如HeaderStyle、FooterStyle、SelectedRowStyle等。5.4.3GridView控件的域GridView控件的Columns属性表示该控件中域〔Field〕的集合。该集合中的每一个元素的基类型都为DataControlField。GridView控件共包括7种域,如BoundField、ButtonField等。5.4.5编辑数据GridView控件对数据具有内置的编辑功能,它能够直接修改或删除数据源中的数据。该控件的CommandField域种可以提供【编辑】、【取消】、【更新】和【删除】按钮。这些按钮分别执行进行编辑状态、取消编辑、更新数据和删除数据等操作。默认情况下,GridView控件以只读模式显示数据。假设控件启用了编辑功能,且处于编辑模式时,那么被编辑行的位置不再显示文本,而是显示可编辑控件〔如TextBox、CheckBox等控件〕。此时,用户可以在可编辑控件中直接编辑数据。单击【取消】按钮,可以取消编辑操作,单击【更新】按钮,将把编辑的结果提交到数据库中。5.4.6排序数据GridView控件内置了排序功能,能够对显示的数据按列排序。假设要启用GridView控件的排序功能,只要把它的AllowSorting属性的值设置为true即可。此时,GridView控件把每一列的标题显示为链接。单击每一列的标题可以对该列数据进行排序。5.4.7分页数据GridView控件提供了内置分页功能,它能够以分页方式显示数据源中的数据。假设要启用GridView控件的分页功能,只要把它的AllowPaging属性的值设置为true即可。5.4.8GridView控件的事件GridView控件控件提供了与行的行为、以及对行的数据进行选择、编辑、更新、删除等操作相关的事件,5.5操作一条记录ASP.NET2.0提供了一种可以操作一条记录的数据控件:DetailsView和FormView。它们和Repeater、DataList、GridView等迭代控件最大的区别在于:迭代控件可以一次显示多条记录,而DetailsView和FormView一次只能显示一条记录。5.5.1详细视图控件DetailsView和窗体视图控件FormViewDetailsView和FormView控件非常相似,它们都能够实现显示、编辑、插入或删除数据源中的一条记录,且每一次只能显示或操作一条记录。DetailsView和FormView控件实现的主要功能描述如下:显示一条记录,即将数据源中的数据绑定到控件。插入数据,将新数据插入到数据源中。更新数据,修改当前记录。5.5.2详细视图控件和窗体视图控件的区别虽然DetailsView和FormView控件非常相似,但是它们还存在一定的差异。具体描述如下:DetailsView控件使用表格对控件的内容进行布局,并且数据源中的每一个字段独占一行。FormView控件使用模板对控件的内容进行布局,这种方式的布局比DetailsView控件灵活。DetailsView和FormView控件支持的模板种类不相同,5.5.3实现“主/从〞数据操作DetailsView和FormView控件都可以显示数据源中的单条记录。它们最常用的功能是与GridView控件一起使用,从而实现被称为“主/从〞的数据操作方式。下面的代码实例声明了一个GridView控件、一个DetailsView控件和2个SqlDataSource控件。它们的ID属性的值分别为gvUser、dvUser、myDSUser和myDSSingleUser。其中,gvUser控件使用数据源控件myDSUser,它仅仅提供数据显示功能。dvUser控件的数据源控件为myDSSingleUser控件,它对数据提供了插入、编辑、删除等操作。第6章处理网站的文件和图像文件和图像是网站的重要数据,因此处理网站的文件和图像也是网站的一个必要功能。其中,处理网站的文件和图像主要包括上载文件到效劳器硬盘、上载文件到数据库、下载文件、查看已经上载的文件、显示图像、以二进制方式输出图像、创立图像的水印和创立缩略图等。6.1处理文件本小节主要介绍处理网站的文件,包括上载文件到效劳器硬盘、上载文件到数据库、下载文件和查看已经上载的文件。6.1.1上载文件到效劳器硬盘下述实例代码在FiletoDisk.aspx页面中使用FileUpload控件实现上载文件到效劳器硬盘的功能。FiletoDisk.aspx页面添加了一个FileUpload控件、一个Button控件和一个Label控件,它们的ID属性的值分别为fuFile、btnupload和lbMessage。其中,fuFile控件供用户选择被上载的文件。btnupload控件实现上载文件到效劳器硬盘。lbMessage控件显示上载过程中的消息。6.1.2上载文件到数据库下述实例代码在FiletoDatabase.aspx页面中使用FileUpload控件实现上载文件到数据库的功能。FiletoDatabase.aspx页面添加了一个FileUpload控件、一个Button控件和一个Label控件,它们的ID属性的值分别为fuFile、btnupload和lbMessage。其中,fuFile控件供用户选择被上载的文件。btnupload控件实现上载文件到数据库。lbMessage控件显示上载过程中的消息。6.1.3下载文件下述实例代码实现了在File.aspx页面中查看或下载用户上载在文件表Files中的文件。实现的具体步骤如下:〔1〕从地址栏中获取被查看或下载的文件的ID值,并保存在变量fileID中。〔2〕定义保存文件二进制数据的数组data。〔3〕从配置文件Web.Config中获取连接数据的连接字符串,并创立数据库的连接对象。〔4〕定义读取被查看或下载的文件的SQL语句“"SELECT*FROM[Files]WHEREID="+fileID〞。6.2处理图像本小节主要介绍处理网站的图像,包括显示图像、以二进制方式输出图像、创立图像的水印和创立缩略图。6.2.1显示图像ASP.NET提供了3个显示图像的控件:Image、ImageMap和<img>。其中,前两个控件为效劳器端控件,后一个控件为HTML控件。Image控件又称为图像控件。它不但可以在Web窗体页上显示图像,而且可以动态设置显示的图像。声明该控件的语法如下:<asp:ImageID="Image1"runat="server"ImageUrl="链接的地址"……/>6.2.2以二进制方式输出图像下面的代码实例在OutImage.aspx页面上输出一个名称为xp.jpg的图像〔该文件保存在Images目录下〕。输出图像的具体步骤如下:〔1〕将图像的虚拟地址“~/Images/xp.jpg〞转换为物理地址,并保存在变量path中。〔2〕定义文件流读取该文件的二进制数据,并保存在变量imageData中。〔3〕调用Response对象的BinaryWrite()方法输出图像的二进制数据。6.2.3创立水印在图片上创立水印,实际上是在给定的图像上绘制文本。在图像上绘制文本,相当于给该图像添加版权信息。因此,创立水印功能使用相当广泛。值得幸运的是,在ASP.NET应用程序中创立图像的水印并不是很复杂。.NETFramework中的命名空间System.Drawing提供的Graphics类可以实现该功能。其中,Graphics类的方法DrawString()可以在图片上绘制给定的文本字符串。6.2.4创立缩略图在下述代码实例中,函数MakeThumbImage(stringpath,stringstpath,intwidth,intheight,stringmode)创立给定图像的缩略图。其中,path参数为源图路径、stpath参数为缩略图的路径、width参数为缩略图宽度、height参数为缩略图高度、mode参数表示生成缩略图的方式。该函数首先获取源图像,并创立源图像的Image类的实例image,然后根据mode参数〔创立缩略图的模式〕计算出缩略图的高度和宽度。该函数可以创立4种模式的缩略图,第7章构建Web2.0网络应用的根底工程本书共介绍了6个Web2.0时代比较流行的网络应用程序。它们是RSS、Blog、WebTags、WebStore、XMLBBS、ASPNET2AjaxMail。这6个网络应用程序被组织在同一个解决方案——Web2ASPNET2中。并且,笔者还为这6个网络应用程序提供了3个根底工程,具体描述如下。工程OperateSqlServer,主要封装和实现了对数据库的操作,如检索、选择、添加、修改、删除、排序、过滤等。工程CommonOperation,主要封装和实现了网络应用程序的通用操作,如数据类型转换、字符串处理、数据缓存等。7.1解决方案Web2ASPNET2解决方案Web2ASPNET2共包括6个网络应用程序〔RSS、Blog、WebTags、WebStore、XMLBBS和ASPNET2AjaxMail〕和3个根底工程〔OperateSqlServer、CommonOperation和UserCommonOperation〕。在VisualStudio2005中翻开解决方案Web2ASPNET2,在【解决方案资源管理器】面板中查看该解决方案,7.2操作数据库的工程OperateSqlServer工程OperateSqlServer包含两个类文件:OperateDatabase.cs和DataCommon.cs。其中,第一个文件定义了与数据库操作相关的方法和属性。第二个文件中定义了快捷执行数据库操作的方法和属性。在VisualStudio2005的【解决方案资源管理器】面板中查看该工程,7.2.1获取配置数据库连接字符串的标识在下述程序代码中,类OperateDatabase定义了两个属性:ReturnValueString和ConnectionStringNameInWebConfig。第一个属性为保存执行数据库操作返回值的参数标识。第二个属性为从配置文件Web.Config中获取数据库连接字符串的标识。它的值和配置文件Web.Config中的connectionstrings元素的Name属性的值相等。定义这两个属性的程序代码如下所示。7.2.2管理数据库的连接在下述程序代码中,类OperateDatabase定义方法CreateSqlConnection()来创立连接。该方法首先从Cache中获取数据库连接字符串。如果为空,那么从配置文件Web.Config中获取数据库连接字符串,同时缓存获取的字符串。然后创立一个新的连接对象SqlConnection。该方法的程序代码如下所示。7.2.3创立存储过程的参数在下述程序代码中,类OperateDatabase定义了4个创立存储过程参数的方法,如下所示。〔1〕privatestaticSqlParameterCreateParam〔stringParamName,SqlDbTypeDbTypeInt32Size,ParameterDirectionDirection,objectValue〕。〔2〕publicstaticSqlParameterCreateInParam(stringParamName,SqlDbTypeDbType,intSize,objectValue)。〔3〕publicstaticSqlParameterCreateOutParam(stringParamName,SqlDbTypeDbType,intSize)。7.2.4创立执行存储过程的命令和适配器在下述程序代码中,类OperateDatabase定义了两个创立执行存储过程的命令和适配器的方法,如下所示。〔1〕privatestaticSqlCommandCreateSqlCommand〔stringprocName,paramsSqlParameter[]prams〕;〔2〕privatestaticSqlDataAdapterCreateSqlDataAdapter〔stringprocName,paramsSqlParameter[]prams〕。7.2.5获取记录的数量在下述程序代码中,类OperateDatabase定义了两个获取记录的数量的方法,如下所示。〔1〕publicstaticintRunProcScalar〔stringprocName〕。〔2〕publicstaticintRunProcScalar〔stringprocName,paramsSqlParameter[]prams〕。7.2.6使用SqlDataReader对象从数据库中读取数据在下述程序代码中,类OperateDatabase定义了两个使用SqlDataReader对象从数据库中读取数据的方法,如下所示。〔1〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr〕。〔2〕publicstaticvoidRunProc〔stringprocName,outSqlDataReaderdr,paramsSqlParameter[]prams〕。7.2.7获取数据并填充DataSet对象在下述程序代码中,类OperateDatabase定义了4个获取数据并填充DataSet对象的方法,如下所示。〔1〕publicstaticvoidRunProc〔stringprocName,refDataSetds〕。〔2〕publicstaticvoidRunProc〔stringprocName,refDataSetds,paramsSqlParameter[]prams〕。7.2.8对数据库执行插入、更新和删除操作在下述程序代码中,类OperateDatabase定义了两个对数据库执行插入、更新和删除操作的方法,如下所示。〔1〕publicstaticintRunProc〔stringprocName〕。〔2〕publicstaticintRunProc〔stringprocName,paramsSqlParameter[]prams〕。7.2.9快捷执行数据库的操作工程OperateSqlServer定义了类DataCommon,它提供了6个快捷执行数据库操作的方法。它们分别是:〔1〕publicstaticSqlDataReaderGetDataByReader〔stringprocName〕。〔2〕publicstaticDataSetGetDataByDataSet〔stringp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论