Web开发实用技术Web应用程序开发技术.ppt

上传人:xin****828 文档编号:6391943 上传时间:2020-02-24 格式:PPT 页数:115 大小:1.04MB
返回 下载 相关 举报
Web开发实用技术Web应用程序开发技术.ppt_第1页
第1页 / 共115页
Web开发实用技术Web应用程序开发技术.ppt_第2页
第2页 / 共115页
Web开发实用技术Web应用程序开发技术.ppt_第3页
第3页 / 共115页
点击查看更多>>
资源描述
第6章 NETWeb应用程序开发技术 学习要点 1 掌握C 语言编程技术2 了解ASP NET的运行模式3 熟悉ASP NET的服务器对象4 掌握ASP NET基本控件的使用5 学会配置Web config文件6 掌握ADO NET数据库访问技术7 学会使用VS2005创建Web服务8 掌握进行 NET控件开发的技术 NETWeb应用程序开发技术 要学好ASP NET的编程 必须掌握一种编程语言 本章将首先介绍C 语言 为读者编程提供参考 详细的C 编程方法请看专门书籍 然后介绍了主要Web服务器标准控件 服务器端验证控件和ASP NET内置服务器对象等的使用 介绍了Web config文件的作用和常用配置参数 重点介绍了ADO NET数据库访问技术以及执行存储过程 数据库的事务处理 跨数据库访问 数据绑定技术等内容 给出了创建和访问Web服务的实例 以案例方式对 NET中的代码重用实现技术 包括Web开发中的类库构建与访问 Web自定义控件和工具箱控件开发等进行了初步介绍 最后实例演示了如何在ASP NET中进行XML编程 第6章 NETWeb应用程序开发技术 6 1C 语言初步6 2常用ASP NET控件的使用6 3Web config文件的配置6 4ASP NET内置服务器对象与Global asax文件6 5ADO NET数据库访问技术6 6用VS2005创建和访问Web服务实例6 7Web开发中的类库构建与访问6 8Web控件开发实例6 9ASP NET中XML编程基础 6 1C 语言初步 6 1 1C 程序的基本结构6 1 2C 中的数据类型6 1 3C 变量声明及其初始化6 1 4C 表达式6 1 5C 控制语句6 1 6C 类声明 6 2常用ASP NET控件的使用 6 2 1服务器端标准控件6 2 2服务器端验证控件6 2 3服务器控件使用注意事项6 2 4服务器端数据访问控件 6 4ASP NET内置服务器对象与Global asax文件 6 4 1ASP NET内置服务器对象6 4 2Global asax文件 6 5ADO NET数据库访问技术 6 5 1Connection对象6 5 2Command对象6 5 3DataReader对象6 5 4Dataset对象与DataAdapter对象6 5 5执行存储过程6 5 6数据库事务处理6 5 7跨数据库访问6 5 8数据绑定技术 6 7Web开发中的类库构建与访问 6 7 1在Web开发中构建一个类库6 7 2在Web开发中访问类库 6 8Web控件开发实例 6 8 1建立用户自定义控件6 8 2工具箱控件的创建与使用 6 1 1C 程序的基本结构 C 是由C和C 发展而来的面向对象和类型安全的编程语言 C 读作CSharp 它和JAVA非常相近 其目标在于把VisualBasic的高生产力和C 本身的能力结合起来 下面我们通过一个C 语言的简单例子来了解一些概念和用C 语言编写程序的方法 例6 1 usingSystem classHello staticvoidMain Console WriteLine Hello world 下面对这个程序进行一些说明 1 C 程序的源代存储在扩展名为 cs的文件中 2 usingSystem引用名称空间 名称空间是在Microsoft NET类库中提供的 使用 using 命令后 就可以无障碍地使用名称空间中的各种类型员 例如System名称空间下有一个IO名称空间 IO名称空间下又有一个File名称空间 现在我们要使用该空间则在引用的时候可以写成usingSystem IO File 3 Main方法是类Hello中的一个成员 它有static的说明符 所以它是类Hello中的一个方法而不是此类中的实例 Main方法是应用程序的主入口点 也称作开始执行应用程序的方法 4 C 语言编译器CSC EXE只是将程序员编写的代码编译成MSIL MicrosoftIntemediateLanguage 中间语言 中间语言在安装时被运行库编译成本机代码或者首次运行时被实时编译 因此例6 1中的hello exe只是一个由中间语言可执行文件头组成的可移植执行文件 下面我们从以下几个方面对C 语言进行详细介绍 6 1 2C 中的数据类型 C 支持两种类型 数据类型和引用类型 数据类型和引用类型的区别在于 数据类型变量直接包含它们的数据 而引用类型变量是存储对于对象的引用 对于引用类型 有可能两个变量引用相同的对象 因而可能出现对一个变量的操作影响到其他变量所引用对象的情况 对于数据类型 每个变量都有它们自己对数据的拷贝 所以不太可能因为对一个进行操作而影响到其他变量 6 1 3C 变量声明及其初始化 我们结合表6 1来介绍数据类型变量声明及其初始化表6 1 C 中有静态变量 引用参数 数组变量 实例变量 值参数 输出参数和局部变量7种变量类型 具体参照下表 在C 中 既可以通过值也可以通过引用传递参数 通过引用传递参数允许函数成员更改参数的值 并保持该更改 若要通过引用传递参数 可使用ref或out关键字 ref和out这两个关键字都能够提供相似的功效 其作用也很像C中的指针变量 它们的区别是 1 使用ref型参数时 传入的参数必须先被初始化 对out而言 必须在方法中对其完成初始化 2 使用ref和out时 在方法的参数和执行方法时 都要加Ref或Out关键字 以满足匹配 3 out适合用在需要retrun多个返回值的地方 而ref则用在需要被调用的方法修改调用者的引用的时候 注 在C 中 方法的参数传递有四种类型 传值 byvalue 传址 byreference 输出参数 byoutput 数组参数 byarray 传值参数无需额外的修饰符 传址参数需要修饰符ref 输出参数需要修饰符out 数组参数需要修饰符params 传值参数在方法调用过程中如果改变了参数的值 那么传入方法的参数在方法调用完成以后并不因此而改变 而是保留原来传入时的值 传址参数恰恰相反 如果方法调用过程改变了参数的值 那么传入方法的参数在调用完成以后也随之改变 实际上从名称上我们可以清楚地看出两者的含义 传值参数传递的是调用参数的一份拷贝 而传址参数传递的是调用参数的内存地址 该参数在方法内外指向的是同一个存储位置 6 1 4C 表达式 C 的表达式大致包含了算术表达式 赋值表达式 关系表达式和逻辑表达式 1 算术表达式用算术操作符把数值连接在一起的 符合C 语法的表达式称为算术表达式 算术操作符包括 2 赋值表达式C 赋值操作符的运算规则下表所示 3 关系表达式 等操作符称为关系操作符 用关系操作符把运算对象连接起来并符合C 语法的式子称为关系表达式 关系表达式要么返回true要么返回false 4 逻辑表达式 and or 和 not 操作符称为逻辑操作符 用逻辑操作符把运算对象连接起来并符合C 语法的式子称为逻辑表达式 6 1 5C 控制语句 C 中控制语句主要包括分支和循环语句 分支语句有3种 1 三元运算符 例如 a b 5 100 10表示b 5时a 100 否则a 10 2 if语句 3 switch语句 循环语句有4种 1 已知步长的for语句 2 foreach语句 3 while语句 4 dowhile语句 它们的语法结构如表6 4所示 其中switch语句可一次将测试变量与多个值比较 而if仅仅测试一个条件 对于循环语句可用break和continue语句决定是否跳出循环或继续执行循环 foreach语句可以遍历一个集合中的所有元素 6 1 6C 类声明类是一种将数据成员 函数成员和嵌套类型等进行封装的数据结构 它在面向对象基础上引入了接口 属性 方法 事件等组件特性 其数据成员可以是常量或域 函数成员可以是方法 属性 索引 事件 操作符或静态构造函数和析构函数 构造函数在创建对象时被自动调用 用来执行对象的初始化操作 其函数名总是与类名相同 析构函数在释放对象时被调用 用来删除对象前做一些清理工作 类的访问修饰符有五种可能形式 如下表所示 public 对任何类和成员都公开 无限制访问 protected 仅仅对该类以及该类的派生类公开 private 仅仅对该类公开 internal 只能值包含该类的程序集中访问该类 只是单独的项目 而不是整个解决方案 protectedinternal 只能在本类 派生类或者包含该类的程序集中访问 下面简要介绍类成员的有关概念 1 常数一个常数是一个代表常数值的类成员即某个可以在编译时计算的数值 只要没有循环从属关系 允许常数依赖同一程序中的其他常数 2 域 字段 域是一个代表和某对象或类相关的变量的成员 域也叫成员变量 它表示存储位置 用来保存类的各种数据信息 域可以是静态的 只读域可以用来避免错误的发生 对于一个只读域的赋值 只会在相同类中的部分声明和构造函数中发生 3 方法方法是一个执行可以由对象或类完成的计算或行为的成员 方法有一个形式参数列表 可能为空 一个返回数值 或void 并且可以是静态也可以是非静态 静态方法要通过类来访问 非静态方法 也称为实例方法 通过类的实例来访问 方法可以被重复调用 这意味着只要有一个唯一的签名 多个方法可能有相同的名称 方法的签名包括方法 数据 修饰符和它的形式参数的各种类型的名称 方法的签名不包括return类型 4 属性属性是提供对对象或类的特性进行访问的成员 属性的例子包括字符串的长度 字体的大小 窗口的焦点 用户的名字等等 属性是域的自然扩展 两者都是用相关类型成员命名 并且访问域和属性的语法是相同的 然而 与域不同 属性不指示存储位置 作为替代 属性有存取程序 它指定声明的执行来对它们进行读或写 属性是由属性声明定义的 属性声明的第一部分看起来和域声明相当相似 第二部分包括一个get存取程序和一个set存取程序 5 事件事件是使得对象和类提供通知的成员 一个类通过提供事件声明来定义一个事件 这看起来与域和事件声明相当类似 但是有一个event关键字 这个声明的类型必须是delegate类型 6 操作符操作符是一个定义了可以用来使用在类的实例上的表达式 7 索引器索引器 indexer 是使得对象可以像数组一样被索引的成员 属性使类似域的访问变得可能 索引器使得类似数组的访问变得可能 索引器的声明类似于属性的声明 最大的不同在于索引器是无名的 由于this是被索引 所以用于声明中的名称是this class或struct只允许定义一个索引器 而且索引器总是包含单个索引参数 索引参数在一对方括号中提供 用于指定要访问的元素 8 实例构造函数实例构造函数是实现对类中实例进行初始化的行为的成员 是一种特殊的方法 它与类同名 能获取参数 但不能返回任何值 每个类都必须至少有一个构造函数 如果类中没有提供构造函数 那么编译器会自动提供一个没有参数的默认构造函数 9 析构函数析构函数 destructor 是实现破坏一个类的实例的行为的成员 析构函数完成对象被垃圾回收时需要执行的整理工作 在碎片收集时会被自动调用 在C 中 没有提供一个delete操作符 由运行库控制何时摧毁一个对象 析构函数的语法是首先写一个 符号 然后跟上类名 析构函数不能有参数 不能带任何访问修饰符 比如public 而且不能被调用 不能在一个struct中声明一个析构函数 10 静态构造函数静态构造函数是实现对一个类进行初始化的行为的成员 静态构造函数不能有参数 不能有修饰符而且不能被调用 当类被加载时 类的静态构造函数自动被调用 11 继承继承 Inheritance 是面向对象的一个关键概念 它描述了类之间的一种关系 假如多个不同的类具有大量通用的特性 而且这些类相互之间的关系非常清晰 那么使用继承就能避免大量重复的工作 类支持单继承 System Object类是所有类的基类 所有类都是隐式地从System Object类派生而来的 方法 属性和索引器都可以是虚拟 virtual 的 这意味着他们可以在派生的类中被覆盖 override 可以通过使用abstract关键字来说明一个类是不完整的 只是用作其他类的基类 这样的类被称为抽象类 抽象类可以指定抽象函数 非抽象派生类必须实现的成员 12 接口接口定义了一个连接 一个类或结构必须根据它的连接来实现接口 接口可以把方法 属性 索引器和事件作为成员 类和结构可以实现多个接口 因为通过外部指派接口成员实现了每个成员 所以用这种方法实现的成员称为外部接口成员 外部接口成员可以只是通过接口来调用 13 委派委派 delegates 是指向一个方法的指针 委派与C 中的函数指针相似 与函数指针不同委派是类型安全并且可靠的 委派是引用类型 它从公共基类 System Delegate派生出来 一个委派实例压缩了一个方法 可调用的实体 对于静态方法 一个可调用实体由类和类中的静态方法组成 委派的一个有趣而且有用的特性是它不知道或不关心与它相关的对象的类型 对象所要做的所有事情是方法的签名和委派的签名相匹配 这使得委派很适合 匿名 调用 而这是个很有用的功能 定义和使用委派分为三步 声明 实例化和调用 用delegate声明语法来声明委派 delegatevoidSimpleDelegate 声明了一个名为SimpleDelegate的委派 它没有任何参数并且返回类型为void 14 枚举枚举类型的声明为一个符号常数相关的组定义了一个类型名称 枚举应用于 多选择 的场合 运行时间是由在编译时所知道的固定的选择数目所决定 因为使用枚举可以使代码更可读还可以自归档 所以使用枚举比使用整数常数要好 代码的自归档特点也使得开发工具可以帮助编写代码和进行一些其他的 设计者 行为 在本小节最后 我们给出一个范例 本店经营各类毛绒玩具礼品 公仔 靠垫 挂件等等 支持批发零售 欢迎来样看样定做生产 为了赚人气 本店所有商品批发价销售 超低秒杀 虽然我们的信誉不高 但我们会以诚信为本 为您提供质高价廉的商品和优质的服务 祝您购物愉快 欢迎大家来逛逛 扬州五亭龙玩具总动员 个人小广告 6 2常用ASP NET控件的使用 ASP NET控件主要分为以下八类 如表所示 6 2 1服务器端标准控件 1 Label和Literal控件使用Label控件在网页的设置位置上显示文本 可以通过Text属性自定义显示文本 Text属性中可以包含其他HTML元素 Literal控件和Label控件类似 但它不可向文本中添加任何HTML元素 因此 Literal控件不支持包括位置属性在内的任何样式属性 转换成客户端HTML代码后 Literal则是什么标记都不带 但Literal控件允许指定是否对内容进行编码 通常情况下 当希望文本和控件直接呈现在页面中而不使用任何附加标记时 可使用Literal控件 2 TextBox文本框控件该控件用于获取用户输入的文本或显示文本 Text控件常用的属性如下表所示 3 Image控件该控件是用来插入图片的 常用的属性如下表所示 4 BUTTON LINKBUTTON IMAGEBUTTON控件这三个控件分别表示普通按钮 超链接形式的按钮和图像按钮 每当用户单击按钮时 即调用CLICK事件处理程序 这三个控件常用的属性如下表所示 CommandName CommandArgument使用范例 5 HyperLink控件该控件用于制作文本或图片超级链接 常用的属性下表所示 6 RadioButton单选按钮该控件为用户提供由两个或多个互斥选项组成的选项集 当用户选择某单选按钮时 同一组中的其他单选按钮不能同时被选定 当单击RadionButton按钮时 其Checked属性设置为true 并且调用Click事件处理程序 当Checked属性的值更改时 将引发CheckedChanged事件 用户可以通过用Text属性设置控件内显示的文本 RadioButton控件常用的属性如下表所示 7 CheckBox复选框该控件通常是成组使用来完成多重选项的目的 Checkbox控件常用的属性如表所示 CheckBox控件使用范例 8 DropDownList控件DropDownList控件使用户可以从下拉列表框中进行选择 DropDownList控件常用属性及说明如下表所示 DropDownList控件使用范例 9 ListBox列表框列表框通过显示多个选项供用户选择达到与用户对话的目的 ListBox控件常用的属性如下表所示 10 FileUpload文件上载控件该控件可实现让用户在客户端选择一个文件 然后放到Web服务器的某个指定的文件夹下 FileUpload文件上载控件使用范例 11 Panel和Placeholder控件Panel和Placeholder控件都属于容器控件 容器控件是指该控件可以动态容纳其他控件或HTML元素 要在运行时刻向Web页面中动态添加内容 利用容器控件即可实现动态添加内容到Web页中 Panel和Placeholder控件 占位控件 转换成客户端HTML代码后 呈现为div元素 PlaceholderWeb服务器控件可以将空的容器控件放置到页内 然后在运行时动态添加 删除子元素等 该控件只呈现其子元素 不具有自己的基于HTML的输出 Panel服务器控件最终在客户端呈现为div元素 但在Web开发时允许用户在该控件中添加其他控件 而且在运行过程中也允许动态添加控件 6 2 2服务器端验证控件服务器端验证控件是ASP NET控件中新产生的一类验证控件 当用户输入错误时 验证控件可以显示错误信息 验证控件在正常工作情况下是不可见的 只有当用户输入数据有误时 它们才是可见的 在具体介绍每个控件之前先了解一下它们的公共属性 验证控件的公共属性如下表所示 服务器端验证控件包含RequiredFieldValidator RangeValidator RegularExpressionValidator CompareValidator CustomValidator ValidationSummary六种验证控件 1 RequiredFieldValidator控件该控件又称非空验证控件 常用于文本输入框的非空验证 若在网页上使用此控件 则当用户提交网页到服务器端时 系统自动检查被验证控件的输入是否为空 如果为空 则网页显示错误信息 2 RangeValidator控件该控件又称范围验证控件 当用户输入不在验证范围内的值时将印发页面错误 该控件提供Integer String Date Double和Currency五种验证 3 RegularExpressionValidator控件该控件又称正则表达式验证控件 它的验证功能比非空验证控件和范围验证控件更强大 用户可以自定义或书写自己的验证表达式 4 CompareValidator控件该控件又称比较验证控件 主要用来验证TextBox控件内容或者某个控件的内容与某个固定表达式的值是否相同 5 CustomValidator控件该控件又称自定义控件 它使用自定义的严整函数来使用验证方式 CustomValidator控件与其他验证控件的最大区别是该控件可以添加客户端验证函数和服务器端验证函数 客户端验证函数总是在ClientValidatorFunction属性中指定的 而服务器端验证函数总是通过OnServerValidate属性来设定 并指定为ServerValidate事件处理程序 6 ValidationSummary控件该控件又称错误总结控件 主要是收集本页中所有验证错误信息 并将它们组织好后显示出来 6 2 3服务器控件使用注意事项 使用VS2005进行Web开发的初学者很容易产生对服务器控件的依赖性 几乎所有Web页面都采用服务器控件 HTML控件 客户端控件 被束之高阁 当然这是一种简便的编程方法 但却是一种不考虑运行效率的做法 我们在本节开头已介绍了客户端控件和服务器控件的区别 服务器控件意味着要消耗更多的网络带宽和服务器资源 而客户端控件的处理逻辑全部在浏览器中进行 因此不能养成使用服务器控件的习惯性思维 在使用控件的时候有必要思考一下采用客户端控件的可能性 6 2 4服务器端数据访问控件 数据访问控件根据所实现的功能分为两大类 数据源控件和数据绑定控件 数据源控件可实现对不同数据源的数据访问 数据绑定控件主要用于以多种方式显示数据 数据源控件和数据绑定控件如下表所示 接上表 数据源控件分为两种 普通数据源控件和层次化数据源控件 树型结构 普通数据源控件包括SqlDataSource ObjectDataSource AccessDataSource主要检索带有行和列的基于数据表的数据源 层次化数据源控件包括XmlDataSource和SiteMapDataSource 主要检索包含层次化数据的数据源 1 SqlDataSource控件SqlDataSource控件可以用来从任何OLEDB或者符合ODBC的数据源中检索数据 能够访问目前主流的数据库系统 该控件常用的属性及说明如下表所示 6 2 4 1数据源控件 2 AccessDataSource控件AccessDataSource是 NET提供了一种访问Access数据库的专用数据源控件 该控件能够快速连接Access数据库 并且通过SQL语句等对数据库记录实现操作 该控件常用的属性及说明如下表所示 3 ObjectDataSource控件 多数ASP NET数据源控件 如SqlDataSource等 都在两层应用程序层次结构中使用 在该层次结构中 表示层 ASP NET网页 可以与数据层 数据库和XML文件等 直接进行通信 但是 常用的应用程序设计原则是 将表示层与业务逻辑相分离 而将业务逻辑封装在业务对象中 这些业务对象在表示层和数据层之间形成一层 从而生成一种三层应用程序结构 ObjectDataSource控件通过提供一种将相关页上的数据控件绑定到中间层业务对象的方法 为三层结构提供支持 在不使用扩展代码的情况下 ObjectDataSource使用中间层业务对象以声明方式对数据执行选择 插入 更新 删除 分页 排序 缓存和筛选操作 ObjectDataSource控件使用反射调用业务对象的方法 以对数据执行选择 更新 插入和删除操作 设置ObjectDataSource控件的TypeName属性来指定要用作源对象的类名称 3 XmlDataSource控件 XmlDataSource控件是专门针对XML数据而发布的数据源控件 该控件常用的属性及说明如下表所示 4 SiteMapDataSource控件 SiteMapDataSource控件用来连接包含来自站点地图的导航数据 此数据包括有关网站中的页的信息 如URL 标题 说明和导航层次结构中的位置 该控件的使用较为复杂 有兴趣的读者可参阅其他专门书籍 6 2 4 2数据绑定控件 1 GridView控件GridView控件采用表格形式显示从数据库中获取的数据集合 通过使用GridView控件 用户可以显示 编辑 删除 排序和翻阅多种不同的数据源中的表格数据 该控件常用的属性及说明如下表所示 GridView控件使用范例 2 Repeater控件数据绑定控件Repeater的主要功能是以更自由的方式来控制数据的显示 它会按照所要求的样式严格地输出数据记录 Repeater控件使用范例 3 DataList控件DataList服务器控件使用模板和样式来显示数据 它需要连接到某个数据源控件 实现不同布局的数据显示 DataList控件所支持的模板类型类似于Reapter控件 但增加了编辑和选择模板 编辑模板可用来删除和修改记录 选择模板可用来处理选中某个记录后的显示方式 模板类型如下表所示 DataList控件的常用事件及说明如下表所示 DataList控件使用范例 3 DetailsView控件DetailsView控件的主要功能是以表格形式显示和处理来自数据源的单条数据记录 DetailsView控件支持以下功能 绑定至数据源控件 内置插入功能 内置更新和删除功能 内置分页功能 以编程方式访DetailsView对象模型从而动态设置属性 处理事件等 可通过主题和样式进行自定义外观 下表列出了可以在DetailsView控件中使用的7种不同行字段类型 DetailsView同样支持模板功能 下表列出了它所支持的模板 DetailsView控件常用属性与GridView控件相似 可以参照学习DetailsView控件的常用事件及说明如下表所示 DetailsView控件使用范例 4 FormView控件FormView控件用于显示数据源中的单个记录 FormView控件则默认创建一个空白的区域 实际上所创建的是一个只有一行一列的表格 FormView控件不具备自动创建表格显示数据的功能 FormView控件需要开发人员自定义ItemTemplate PagerTemplate等模板属性 以自定义方式显示各个字段 FormView控件支持以下功能 支持绑定到数据源控件 内置数据插入 更新和删除功能 内置分页功能 允许以编程方式访问FormView控件对象模型 以动态设置属性 处理事件等 通过用户定义的模板 主题和样式自定义外观 FormView控件作为一个数据绑定控件 可与数据源控件结合实现各种数据操作 当FormView控件通过DataSouceID属性连接数据源控件后 该控件可利用数据源控件的内置功能 在自身内置功能的支持下 实现数据更新 删除 添加和分页等操作 由于FormView控件使用模板属性 因此 没有提供自动生成命令按钮的功能 开发人员必须在模板属性中 自行定义各种命令按钮 这样才能实现数据操作功能 DetailsView控件支持的模板见下表 FormView控件使用范例 5 ReportViewer控件ReportViewer服务器控件用来呈现表格格式数据 聚合数据和多维数据 它可以图表的形式显示数据 ReportViewer服务器控件可以配置成以本地处理模式或远程处理模式运行 本地处理模式 是指ReportViewer控件在客户端应用程序中处理报表 所有报表都是使用应用程序提供的数据作为本地过程处理的 远程处理模式 是指由SQLServer2005ReportingServices报表服务器处理报表 在远程处理模式下 ReportViewer控件用作查看器 显示已经在ReportingServices报表服务器上发布的预定义报表 ReportViewer控件中常用的属性如下表所示 6 6 2 3正确使用GridView Repeater和DataList控件数据绑定控件GridView Repeater和DataList是显示数据的有力控件 其中GridView是迄今为止功能最为丰富的数据显示控件 大部分功能可通过属性设置来完成 甚至不需要编写一行代码就能实现强大的数据处理功能 许多初学者在进行Web开发时 只要遇到数据处理或显示就习惯性地使用GridView控件 虽然使用GridView大大减少了开发者的编程工作量 但最大的问题就是该控件在处理数据时需要占用很多Web服务器资源 生成在客户端呈现的HTML文件也非常大 而且只能以表格形式输出数据 最终导致系统响应性能降低 我们建议在用户数据量不大且不需要出色的界面效果 特别是当需要编辑 分页 排序功能的时候 快的处理性能 具有更好的显示效果的时候推荐使用Reapter控件 Reapter控件允许对用户通过模板自定义数据项的输出 处理速度非常快 但Reapter控件的缺点是 必须在各个模板中进行手工编写代码 对于分页 排序 编辑等都必须编写代码 DataList控件的使用性能介于GridView和Repeater之间 可在DataList中通过属性设置定义各个模板 然后部分地通过编程实现分页 排序 数据编辑 6 3Web config文件的配置 ASP NET的应用程序配置文件web config是基于XML格式的纯文本文件 存在于应用的各个目录下 它决定了站点所在目录及其子目录的配置信息 并且子目录下的配置信息覆盖其父目录的配置 1 配置文件的语法规则 标记配置内容被置于web config文件中的标记和之间 格式如下 配置内容 配置段句柄说明ASP NET的配置文件架构并未指定任何文件格式或者是支持的配置属性 相反 它提出了 配置段句柄申明 的概念来支持任意的用户定义配置段 格式如下 配置段具体定义配置的内容 供应用使用 配置段使用范例 2 ASP NET定义的标准配置段ASP NET定义的标准配置段及其说明如下表所示 所有配置信息都驻留在和根XML标记之间 标记间的配置信息分为两个主区域 配置节处理程序声明区域和配置节设置区域 配置节处理程序声明出现在配置文件顶部和标记之间 包含在标记中的每个声明都指定提供特定配置数据集的节的名称和处理该节中配置数据的 NET框架类的名称 配置节设置区域位于区域之后 它包含实际的配置设置 区域中的每个声明都有一个配置节 每个配置节都包含子标记 这些子标记带有包含该节设置的属性 3 WebConfig文件详解 节作用 配置ASP NET身份验证支持 为Windows Forms PassPort None四种 该元素只能在计算机 站点或应用程序级别声明 元素必需与节配合使用 节作用 控制对URL资源的客户端访问 如允许匿名用户访问 此元素可以在任何级别 计算机 站点 应用程序 子目录或页 上声明 必需与节配合使用 节作用 配置ASP NET使用的所有编译设置 默认的debug属性为 True 在程序编译完成交付使用之后应将其设为True Web config文件中有详细说明 此处省略示例 作用 为ASP NET应用程序提供有关自定义错误信息的信息 它不适用于XMLWebservices中发生的错误 节作用 配置ASP NETHTTP运行库设置 该节可以在计算机 站点 应用程序和子目录级别声明 作用 标识特定于页的配置设置 如是否启用会话状态 视图状态 是否检测用户的输入等 可以在计算机 站点 应用程序和子目录级别声明 作用 为当前应用程序配置会话状态设置 如设置是否启用会话状态 会话状态保存位置 作用 配置ASP NET跟踪服务 主要用来程序测试判断哪里出错 4 自定义Web config文件配置节自定义Web config文件配置节过程分为两步 一是在在配置文件顶部和标记之间声明配置节的名称和处理该节中配置数据的 NETFramework类的名称 二是在区域之后为声明的节做实际的配置设置 5 访问Web config文件你可以通过使用ConfigurationSettings AppSettings静态字符串集合来访问 Web config文件配置节和访问范例 6 4Global asax文件 开发应用程序的时候 有时候需要编写一些处理程序级别的事件以及添加程序级别的逻辑代码 这些代码并不会处理单个的页面请求 而是用于处理高层的应用程序级别的事件 比如Application Star Application End Application Error Session Start Session End等 这些代码是放在Global asax文件中 Global asax文件继承自HttpApplication类 它维护一个HttpApplication对象池 并在需要时将对象池中的对象分配给应用程序 Global asax文件包含以下事件 1 Application Init 在应用程序被实例化或第一次被调用时 该事件被触发 对于所有的HttpApplication对象实例 它都会被调用 2 Application Disposed 在应用程序被销毁之前触发 这是清除以前所用资源的理想位置 3 Application Error 当应用程序中遇到一个未处理的异常时 该事件被触发 4 Application Start 在HttpApplication类的第一个实例被创建时 该事件被触发 它允许你创建可以由所有HttpApplication实例访问的对象 5 Application End 在HttpApplication类的最后一个实例被销毁时 该事件被触发 在一个应用程序的生命周期内它只被触发一次 6 Application BeginRequest 在接收到一个应用程序请求时触发 对于一个请求来说 它是第一个被触发的事件 请求一般是用户输入的一个页面请求 URL 7 Application EndRequest 针对应用程序请求的最后一个事件 8 Application PreRequestHandlerExecute 在ASP NET页面框架开始执行诸如页面或Web服务之类的事件处理程序之前 该事件被触发 9 Application PostRequestHandlerExecute 在ASP NET页面框架结束执行一个事件处理程序时 该事件被触发 10 Applcation PreSendRequestHeaders 在ASP NET页面框架发送HTTP头给请求客户 浏览器 时 该事件被触发 11 Application PreSendContent 在ASP NET页面框架发送内容给请求客户 浏览器 时 该事件被触发 12 Application AcquireRequestState 在ASP NET页面框架得到与当前请求相关的当前状态 Session状态 时 该事件被触发 13 Application ReleaseRequestState 在ASP NET页面框架执行完所有的事件处理程序时 该事件被触发 这将导致所有的状态模块保存它们当前的状态数据 14 Application ResolveRequestCache 在ASP NET页面框架完成一个授权请求时 该事件被触发 它允许缓存模块从缓存中为请求提供服务 从而绕过事件处理程序的执行 15 Application UpdateRequestCache 在ASP NET页面框架完成事件处理程序的执行时 该事件被触发 从而使缓存模块存储响应数据 以供响应后续的请求时使用 16 Application AuthenticateRequest 在安全模块建立起当前用户的有效的身份时 该事件被触发 在这个时候 用户的凭据将会被验证 17 Application AuthorizeRequest 当安全模块确认一个用户可以访问资源之后 该事件被触发 18 Session Start 在一个新用户访问应用程序Web站点时 该事件被触发 19 Session End 在一个用户的会话超时 结束或他们离开应用程序Web站点时 该事件被触发 Global asax文件使用范例 6 5ADO NET数据库访问技术 ADO NET是微软在 NET平台下一种全新的数据库访问机制 ADO NET满足了ADO无法满足的三个重要需求 为适应Web环境的编程需要提供了断开的数据访问模型 提供了与XML的紧密集成 提供了与 NET框架的无缝连接 6 5 1Connection对象 数据库应用程序与数据库进行数据交互 首先必须建立与数据库的连接 ADO NET中 使用Connection对象完成此项功能 在这里要指出的是在创建连接之间要在程序中添加System Data和System Data SqlClient两个命名空间 建立与数据库的连接是通过数据库连接字符串来实现的 在连接字符串中要设置一些参数的值 连接SqlServer数据库的常用参数如下表所示 Connection对象常用的方法如下表所示 Connection对象使用范例 6 5 2Command对象 常用的Command对象的属性有以下几种 CommandText属性 获取或设置要对数据源执行的sql命令 存储过程或者数据表名称 当调用ExecuteNuery ExecuteReader ExecuteScalar ExecuteXmlReader中的任意一个方法时 Command对象会执行CommandText属性所指定的内容 CommandTimeout属性 获取或设置Command对象超时时间 单位为秒 默认为30 如果Command对象在30秒时间内不能执行CommandText属性设定的内容便返回失败 CommandType属性 获取或设置CommandText属性代表的意义 可以为CommandType StoreProcedure 存储过程 CommandType Text等 默认为Text Parameters属性 获取ParameterCollectionConnection属性 获取或设置Command对象要使用的数据连接 值为Connectiion对象 常用的Command对象的方法有以下几种 Cancle 取消Command对象的执行 CreateParameter 执行CommandText属性指定的内容 并返回被影响的列数 只有update insert delete三个sql语句回返回被影响的列数 其他的返回的都是 1ExecuteReader 执行CommandText属性指定的内容 并创建DataReader对象ExecuteScalar 执行CommandText属性指定的内容 返回结果的第一行第一列的值 次方法只用于执行select语句Command对象使用范例 6 5 3DataReader对象 DataReader是用来从数据库中检索只读 只进的数据流 使用DataReader可以提高应用程序的性能 因为一旦数据可用 DataReader就立即检索该数据 而不是等待返回查询的全部结果 并且在默认情况下 DataReader一次在内存中只存储一行记录 从而降低了系统开销 常用的DataReader对象的属性有如下几种 FieldCount属性 该属性用来表示由DataReader得到的一行数据中的字段数 HasRows属性 该属性用来表示DataReader是否包含数据 IsClosed属性 该属性用来表示DataReader对象是否关闭 Item name ordinal 属性 该属性用来获取或设置字段内容 name为字段名 ordinal为字段序号 可选用 常见的DataReader对象的方法有如下几种 1 Close方法Close方法不带参数 无返回值 用来关闭DataReader对象 由于DataReader在执行SQL命令时一直要保持同数据库的连接 所以在DataReader对象开启的状态下 该对象所对应的Connection连接对象不能用来执行其他的操作 所以 在使用完DataReader对象时 一定要使用Close方法关闭该DataReader对象 否则不仅会影响到数据库连接的效率 更会阻止其他对象使用Connection连接对象来访问数据库 2 Read 方法boolRead 方法会让记录指针指向本结果集中的下一条记录 返回值是true或false 当Command的ExecuteReader方法返回DataReader对象后 须用Read方法来获得第一条记录 当读好一条记录想获得下一下记录时 也可以用Read方法 如果当前记录已经是最后一条 调用Read方法将返回false 也就是说 只要该方法返回true 则可以访问当前记录所包含的字段 3 NextResult 方法NextResult 方法会让记录指针指向下一个结果集 当调用该方法获得下一个结果集后 依然要用Read方法来开始访问该结果集 4 GetValue inti 方法GetValue inti 方法根据传入的列的索引值 返回当前记录行里指定列的值 由于事先无法预知返回列的数据类型 所以该方法使用Object类型来接收返回数据 5 GetValues Object values 方法GetValues Object values 方法会把当前记录行里所有的数据保存到一个数组里并返回 可以使用FieldCount属性来获知记录里字段的总数 据此定义接收返回值的数组长度 6 获得指定字段的方法获得指定字段的方法有GetString GetChar GetInt32等 这些方法都带有一个表示列索引的参数 返回均是Object类型 用户可以根据字段的类型 通过输入列索引 分别调用上述方法 获得指定列的值 例如 在数据库里 id的列索引是0 通过stringid GetString 0 代码可以获得id的值 7 返回列的数据类型和列名的方法可以调用GetDataTypeName 方法 通过输入列索引 获得该列的类型 这个方法的定义是 stringGetDataTypeName inti 可以调用GetName 方法 通过输入列索引 获得该列的名称 这个方法的定义是 stringGetName inti 综合使用上述两方法 可以获得数据表里列名和列的字段 8 IsDBNull inti 方法 boolIsDBNull inti 方法的参数用来指定列的索引号 该方法用来判断指定索引号的列的值是否为空 返回True或False DataReader对象的使用范例 6 5 4Dataset对象与DataAdapter对象 DataSet对象在ADO NET中是一个全新的概念 也是ADO NET中一个最为重要的对象 DataSet是一种简单并驻留在内存中的数据存储方式 它作为一个相对独立的实体 包含了全套数据 包括约束 关系 设置多表 DataSet虽然拥有类似于数据库的结构 但并不等同于数据库 首先 DataSet不仅可以存储来自于数据库中的数据 而且还可以存储其他类型的数据 如XML格式文档 其次DataSet与数据库之间没有直接的联系 操作DataSet并不等同于数据库中的数据也会发生改变 在DataSet上执行的UPDATE 更新 或Delete 删除 等操作 影响的仅仅是DataSet中存储的数据 而不会在数据库中执行相同的操作 DataSet对象的常用属性如下表所示 DataSet对象的常用方法如下表所示 DataAdapter对象是一种用来充当DataSet与实际数据源之间桥梁的对象 ADO NET通过该对象建立并初始化DataTable DataSet中的数据表 从而与DataSet结合在一起 DataAdapter对象在数据库操作中与DataSet配合使用 可以执行新增 查询 修改和删除等多种操作 DataAdapter对象的常用属性如下表所示 DataAdapter对象的常用方法如下表所示 Dataset对象与DataAdapter对象使用范例 下图给出了DataSet对象的模型结构 DataView对象 DataView对象表示DataSet对象中数据的定制视图 他代表一个DataTable的数据查看方式 DataView对象可以指定筛选条件来选择查看单个数据表或多个数据表中的部分数据 也可以指定与默认查看方式不同的排序方式 DataView对象的常用属性如下表所示 DataView对象的常用属性如下表所示 DataView对象使用范例 6 5 5执行存储过程 存储过程是保存起来的可以接受和返回用户提供的参数的Transact SQL语句的集合 在存储过程中可以使用数据存取语句 流程控制语句 错误处理语句等 其主要特点是执行效率高 可以重复使用 在应用程序中使用存储过程一般性的步骤是 1 创建存储过程 2 建立与相应数据库的连接 3 调用存储过程 4 在程序中说明执行的类型是存储过程 5 若要执行的存储过程有参数则完成填充Parameters集合 否则此步省略 6 执行存储过程应用程序中使用存储过程范例 6 5 6数据库事务处理 事务处理是把一组操作合并为一个逻辑上的工作单元 在系统中没有出现错误的情况下 开发人员可以使用事务处理来控制并保持事务处理中每一个动作的连续性和完整性 在ADO NET中 可以使用Connection和Transaction对象启动 提交和回滚事务 若要执行事务 请执行下列操作 调用Connection对象的BeginTransaction方法来标记事务的开始 BeginTransaction方法返回对Transaction的引用 该引用将分配给登记在事务中的Command对象 将Transaction对象分配给要执行的Command的Transaction属性 如果通过活动的Transaction对象对Connection执行Command 但该Transaction对象尚未分配给Command的Transaction属性 则将引发异常 事物处理是通过SqlTransaction类来实现的 此类包括了两个属性 Connection 指示同事务处理相关联的SqlConnection对象 IsolationLevel 定义事务处理的IsolationLevel 属性IsolationLevel是包括如下成员的枚举对象 1 Chaos 从高度独立的事务处理中出现的pendingchanges不能被覆盖 2 ReadCommitted 当数据需要被非恶意读取时 采用共享锁定 sharedlocks 但数据仍然可以在事务处理结束时被更新 这造成了非重复性的数据读取 nonrepeatablereads 或phantomdata的产生 3 ReadUncommitted 恶意读取数据是可能发生的 这表示没有使用共享锁定 sharedlocks 并且没有实现独占锁定 exclusivelocks 4 RepeatableRead 锁定查询中所用到的所有数据 由此避免其他用户对数据进行更新 在phantomrows仍然可用的状态下 这可以避免非重复性的数据读取 nonrepeatablereads 5 IsolationLevel定义锁定记录的级别 但这一概念不在本文论述范围之内 对象SqlTransaction也提供了类似的方法 你可以使用以下方法来进行事务处理 6 Commit 提交数据库事务处理 7 Rollback 从未决状态 pendingstate 反转 rollback 事务处理 事务处理一旦被提交后即不能执行此操作 8 Save 在事务处理中创建savepoint可以对事务处理的一部分进行反转 并且指定savepoint名称 事物处理范例 6 5 7跨数据库访问 进行跨库查询的时候回遇到两种情况 一是被操作的两个数据库位于同一台物理机器上 一是被操作的两个数据库位于不同的物理机器上 下面分别对这两种情况进行说明 1 被操作的两个数据库位于同一台物理机器上这时我们需要在构造的sql语句中的表名前加上数据库和DBO就可以 形如select fromDB1 DBO Table1我们在程序中建立的与数据库的连接不需要改变 2 被操作的数据库位于不同的物理机器上这时需要我们将另一数据库所在的机器连接过来 同时对sql语句进行构造实现功能假设当前ServerName MyCurrentServer 其中一个TableName MyCurrentTable 链接的数据库Servername MyLinkedServer DatabaseName MyLinkedDB 其中的一个TableName MyLinkedTable 则你的SQL语句可以这样写 selectA B fromMyCurrentTableA MyLinkedServer MyLinkedDB dbo MyLinkedTableB 跨库处理范例 6 5 8数据绑定技术 数据绑定技术最通常的应用是把Web控件中用于显示的属性跟数据源绑到一起 从而在Web页面上显示数据 此外 也可以使用数据绑定技术设置Web控件的其他属性 因此可以说 ASP NET的数据绑定技术非常灵活 数据源可以是数据库中的数据 也可以是XML文档 其他控件的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!