12.2.2 实现CarRentalReservation组件
在本节中,读者将学习C#类库CarRentalReservation的实现。该组件包括所有必要的类和方法,它们为在线预订系统提供核心功能。首先,使用Visual Studio 2005创建一个新的名为CarRentalReservation的Visual C#类库项目。创建项目后,将默认类名称Class1修改为UserDetail。UserDetail类可作为与用户相关数据的保存容器,该类的实现如示例12-1所示。
示例12-1:UserDetail类代码
using System; public string UserID |
正如在示例12-1中看到的代码,UserDetail类公开了一些属性,这些属性可作为用户相关数据的容器。
1.实现数据访问层方法
目前,已经实现了保存用户相关数据的容器。这只是实现的一部分,接着需要创建一个数据访问层类,以便保存数据和从Users表中返回数据。这是由UserDB类来实现。UserDB类的实现如示例12-2所示。
示例12-2:实现UserDB类
using System; public bool AddUserInfo(UserDetail user) |
public class InvalidCredentialsException : Exception |
用户定义的异常能够在发生业务逻辑错误时,或者特定条件下通知客户。还能够实现自定义异常处理机制,例如将登录错误添加到事件日志中,发送电子邮件给管理员等。
AddUserInfo()方法将用户信息存储到User表中。该方法将UserDetail对象作为参数,解析该对象的内容,执行存储过程,根据执行结果返回true或者false。注意,将Phone列(该列是XML类型)添加到SqlCommand对象的Parameters集合中:
SqlParameter paramPhone = new SqlParameter("@Phone", SqlDbType.Xml);
paramPhone.Value = new SqlXml(new XmlTextReader(user.Phone, XmlNodeType.Document, null));
command.Parameters.Add(paramPhone);
通过将枚举SqlDbType.Xml传递给SqlParameter对象构造函数的第二个参数,能够将列类型设置为XML。然后,将System.Data.SqlTypes.SqlXml类型的对象赋值给SqlParameter对象的Value属性。既然已经查看了UserDB类,接着就可以关注RentalDB类了。该类主要用户搜索汽车和进行预订。
2.实现RentalDB类
RentalDB类的公开方法之一是SearchRentalCar(),该方法能够根据特定条件集合搜索汽车。示例12-3列举了RentalDB类的代码。
示例12-3:实现RentalDB类
using System; public int AddBooking(int carID, string customerID, int carClassID, public DataTable GetCarClassCodes() |
除了SearchRentalCar()方法,RentalDB类还包括两个方法:AddBooking(),该方法将预订信息存储到数据库中;GetCarClassCodes(),该方法返回Car_Class表中所有汽车类别代码。基于精简篇幅的考虑,书中不会详细讲解这些方法的实现。然而,读者可以从www.wrox.com下载该实例的完整代码。
3.实现StockDB类
正如名称暗示的那样,StockDB类提供了一些专门用于访问Stocks表的方法。该类实现了GetStockQuote()方法,该方法根据提供的代号返回股票价格。示例12-4列举了StockDB类的代码。
示例12-4:实现StockDB类
using System; |
| 回书目 上一节 下一节 |
| 关于 ASP NET 数据库 事务 CarRentalReservation 组件 系统 架构 ASP.NET 2.0 SQL Server 2005 高级编程 ASP.NET 2.0数据库高级编程 的 |
|
· 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. · Linux结课考试自测获奖.. · 上周Linux系统命令的使.. · 上周真题冲刺测试获奖.. |
· 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. |
|
||||
| · 视频访谈:网管员如何踏.. · 首届中国IT工程师生态.. · 华为路由器配置 · 全面解析35岁技术人的.. · 企业数据恢复指南 · 龙芯要做中国的“奔腾” · 2008年上半年全国软考.. · 交换机故障解决指南 |
· Vista SP1对决XP SP3 · LAMP技术精解 · 微软出价446亿美元收购.. · 网络故障排除宝典 · AIX操作系统管理应用(.. · 华为员工自杀频频拷问.. · 三层交换技术专题 · ARP攻击防范与解决方案 |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 |
· Apache技术专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · ADSL应用面面俱到 |
|||
|
||||
| · iSCSI应用与发展 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 · Apache技术专题 |
· 企业数据恢复指南 · RAID——磁盘阵列基础 · 路由器设置与口令恢复 · SOA 面向服务架构 · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 |
|||