用多层架构构建一个简易留言本.doc

上传人:壹****1 文档编号:562379737 上传时间:2023-12-23 格式:DOC 页数:6 大小:42.50KB
返回 下载 相关 举报
用多层架构构建一个简易留言本.doc_第1页
第1页 / 共6页
用多层架构构建一个简易留言本.doc_第2页
第2页 / 共6页
用多层架构构建一个简易留言本.doc_第3页
第3页 / 共6页
用多层架构构建一个简易留言本.doc_第4页
第4页 / 共6页
用多层架构构建一个简易留言本.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《用多层架构构建一个简易留言本.doc》由会员分享,可在线阅读,更多相关《用多层架构构建一个简易留言本.doc(6页珍藏版)》请在金锄头文库上搜索。

1、用多层架构构建一个简易留言本 ASP.NET终于可以让Web开发人员从ASP的面条代码中脱身出来,以全新的方式来构建Web站点,就像Windows Application一样,我们同样可以用面向对象的、多层的方式来组织和构建Web Application。 下面给出的是一个功能非常简单的留言本程序,旨在揭示ASP.NET强大的能力和全新的开发方式。如果只相对留言本程序本身而言,大家可能怀疑用这么多的气力实现如此简单的程序是否值得,但我说过,例子只是用来说明问题和描述解决方案。其实我认为,从维护和扩充的角度来说,即使再简单的程序,从一开始就进行良好的设计也是非常值得的。 留言本采用多层的方式来构

2、建,下面的介绍为了方便大家理解,并未按照层次的顺序介绍: 一、数据实体(CMessageData类) CMessageData派生自DataSet,用来维护留言数据,在构造函数中,调用CreateDataTables()来增加一个用来保存留言数据的DataTable,并加到自身的DataTable集合中。静态属性TableMapping用来描述这个DataTable的DataColumn和数据库中物理字段的映射关系,数据访问层将使用这个属性来填充数据进CMessageData对象中。 public class CMessageData : DataSet public CMessageData

3、() this.CreateDataTables(); public static DataTableMapping TableMapping get DataTableMapping result = new DataTableMapping(t_gbook_postinfo, MessageTable); result.ColumnMappings.Add(id, Id); result.ColumnMappings.Add(last_reply_time, LastReplyTime); /. return result; private void CreateDataTables()

4、DataTable dt = new DataTable(MessageTable); dt.Columns.Add(Id, typeof(Int32); dt.Columns.Add(LastReplyTime, typeof(DateTime); / . dt.ColumnsId.AutoIncrement = true; dt.ColumnsId.AutoIncrementSeed = 0; dt.ColumnsId.AutoIncrementStep = -1; dt.PrimaryKey = new DataColumn dt.ColumnsId this.Tables.Add(dt

5、); AddedNewRow属性返回一个新增进数据表的、空的DataRow,用于给逻辑层填充。FillDataFormDataBase()的两个重载调用数据访问层的相应方法来填充一个新的CMessageData对象并返回。UpdateToDatabase用于讲自身的数据更改更新回数据库。public DataRow AddedNewRow()public static CMessageData FillDataFromDatabase(Int32 startRecord, Int32 maxRecord)public static CMessageData FillDataFromDataba

6、se(Int32 id)public void UpdateToDatabase() 二、数据访问层(CDataAccess类) 负责连接数据库,进行SIUD(Select,Insert,Update,Delete)操作。数据连接信息放在AppParameters.xml文件中。FillMessageData()的两个重载创建新的CMessageData对象,填充数据,然后返回:public static CMessageData FillMessageData(Int32 startRecord, Int32 maxRecord)public static CMessageData Fill

7、MessageData(Int32 id)UpdateMessageData()把参数中的CMessageData对象所作出的更改更新回数据库:public static Int32 UpdateMessageData(CMessageData messageData) OleDbConnection conn = new OleDbConnection(CAppParameters.OleDbConnectionString); OleDbCommand cmdSelect = new OleDbCommand(Select username,last_reply_time,guest_na

8、me,guest_email,guest_website_name,guest_website_url,guest_oicq,guest_ip,guest_post_time,guest_text,reply_data From t_gbook_postinfo, conn); OleDbCommand cmdInsert = new OleDbCommand(); cmdInsert.Connection = conn; cmdInsert.CommandText = Insert Into t_gbook_postinfo (last_reply_time,guest_name,guest

9、_email,guest_website_name,guest_website_url,guest_oicq,guest_ip,guest_post_time,guest_text,reply_data) Values (last_reply_time,guest_name,guest_email,guest_website_name,guest_website_url,guest_oicq,guest_ip,guest_post_time,guest_text,reply_data); cmdInsert.Parameters.Add(last_reply_time, OleDbType.D

10、BDate, 0, last_reply_time); cmdInsert.Parameters.Add(guest_name, OleDbType.VarWChar, 255, guest_name); / OleDbCommand cmdUpdate = new OleDbCommand(); cmdUpdate.Connection = conn; cmdUpdate.CommandText = Update t_gbook_postinfo Set last_reply_time=last_reply_time,guest_name=guest_name,guest_email=gue

11、st_email,guest_website_name=guest_website_name,guest_website_url=guest_website_url,guest_oicq=guest_oicq,guest_ip=guest_ip,guest_post_time=guest_post_time,guest_text=guest_text,reply_data=reply_data Where (id=Original_id); cmdUpdate.Parameters.Add(last_reply_time, OleDbType.DBDate, 0, last_reply_tim

12、e); cmdUpdate.Parameters.Add(guest_name, OleDbType.VarWChar, 255, guest_name); / OleDbCommand cmdDelete = new OleDbCommand(); cmdDelete.Connection = conn; cmdDelete.CommandText = Delete From t_gbook_postinfo where (id = Original_id); cmdDelete.Parameters.Add(Original_id, OleDbType.Integer, 0, id).So

13、urceVersion = DataRowVersion.Original; OleDbDataAdapter ada = new OleDbDataAdapter(cmdSelect); ada.InsertCommand = cmdInsert; ada.UpdateCommand = cmdUpdate; ada.DeleteCommand = cmdDelete; ada.TableMappings.Add(CMessageData.TableMapping); return ada.Update(messageData, t_gbook_postinfo); 把数据访问层单独提取出来的好处就是其他层都不会直接和数据库打交道,如果我们把数据库从Access改成SqlServer只需要用一个新的CDataAccess类替换现在的即可。在源码中,就有一个使用了Odbc.Net实现的COdbcDataAccess,用这个替换掉CDataAccess不会对程序中其他部分产生任何影响,我们可以利用Odbc.Net的访问能力,把数据库改为Oracle、Forpro等。 三、逻辑层 这个留言本的逻辑层很简单,由三个类组成,CMessage用来描述一条留言,CReply用来描

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号