深入体验C - 项目开发- 在线留言簿系统(4)

2020-04-14 05:59

深入体验C#项目开发

}

throw new Exception(ex.Message,ex); }

finally

{ //关闭连接 con.Close(); }

return ds;

6. 添加留言回复信息

添加留言回复信息即将新发布的留言回复信息添加到系统库中,此功能是由方法AddReply(string message,string ip,int messageID)实现的。其具体实现流程如下。

(1) 从系统配置文件Web.config内获取数据库连接参数,并将其保存在connectionString内。

(2) 使用连接字符串创建con对象,实现数据库连接。

(3) 使用SQL添加语句,然后创建cmd对象准备插入操作。 (4) 打开数据库连接,执行新数据插入操作。

(5) 将数据插入操作所涉及的行数保存在result中。 (6) 插入成功则返回result值,失败则返回-1。 上述功能的对应实现代码如下。

public int AddReply(string message,string ip,int messageID) { string connectionString = ConfigurationManager.ConnectionStrings [\ SqlConnection con = new SqlConnection(connectionString); string cmdText = \ MessageID)VALUES(@Reply,@IP,GETDATE(),@MessageID)\ SqlCommand cmd = new SqlCommand(cmdText,con); ///创建参数并赋值 cmd.Parameters.Add(\ cmd.Parameters.Add(\ cmd.Parameters.Add(\ cmd.Parameters[0].Value = message; cmd.Parameters[1].Value = ip; cmd.Parameters[2].Value = messageID; int result = -1; try { ///打开连接 con.Open(); ///操作数据 result = cmd.ExecuteNonQuery(); } catch(Exception ex) { ///抛出异常 throw new Exception(ex.Message,ex); }

52

第2章 在线留言簿系统

}

}

}

finally

{ ///关闭连接 con.Close(); }

return result;

在上述各处理方法中,使用了SQL的查询、添加和删除语句,对系统数据库内的数据进行了操作处理。在现实Web应用系统中,各类应用的数据库相关操作都是基于上述3种操作的。SQL语句是数据库技术的核心知识之一,读者可以通过在百度中检索“SQL教程”关键字来获取其相关知识。

2005年12月18日,晴空万里

今天完成了数据库访问层的编码工作,压力顿时减轻了许多,决定抽出一点时间做一个技术总结。在ASP.NET程序中,常把经常用到的设置性信息保存到数据库中,这些信息对于每一个访问用户都是相同的。若每一个用户访问时,都要去数据库里取出来,然后显示给用户,会加重数据库服务器负载,使之无法快速服务于更重要的事务处理。而且Web服务器也必须不停地创建ADO对象,从而消耗大量资源,导致当用户很多时几乎失去响应。如果能把一些常用信息事先存储在内存中,当用户访问时,直接从内存中取出,显示给用户,则可以大大减小系统的压力,提高响应速度。

在具体应用时,可以把已经取得了数据的RecordSet对象存储在Application变量中。当用户访问时,从Application变量中取得RecordSet对象,而不需再次建立数据库连接。也可以将RecordSet对象里的数据存储在数组中,然后再将数组存储在Application变量中,使用时用数组的方式读取。

另外,在此总结一下效率的问题。因为数据库技术是动态站点的基础,所以在Web程序内会有大量的查询语句。同时,随着站点访问量的增加,一个站点可能同时需要查询大量数据,所以数据库查询的效率问题便提上了日常议程。在此向读者提出如下两条建议。

(1) 合理使用索引。

并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量重复数据时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。读者可以通过在百度中检索“索引效率优化”关键字来获取相关知识。

(2) 使用存储过程。

存储过程是一个很好的工具,它不但提高了程序的安全性,而且也提高了数据处理效率。编写合理的语句可以决定存储过程和触发器的效率。

总结完毕之后,我决定早点休息,为接下来的具体编码阶段做准备。

53

深入体验C#项目开发 2.6 编 码 实 现

2005年12月19日,上午,阳光明媚

因为在系统框架设计中,我已经编写好了共用类,完成了数据访问层的设计,所以编码工作的思路就十分清晰了。D只需在我已经编写类的基础上进行扩充,即可完成整个编码工作。最后的编码工作很重要,所以我让思维最敏捷的D来完成。今天我把需要的前期资料(规划书、数据库设计、框架设计、类设计)都交给了D。

2005年12月20日,上午,多云间阴,出现波澜

5天过去了,和D约定的交付时间已经到了,但是我一直没有看见D的踪影。无奈之下,我给他打了一个电话。原来他女友父母从老家来看他,这几天陪他们去逛大明湖、千佛山了,明天准备去趵突泉,一直抽不出身来做项目。此时的我意识到了问题的严重性,D已经没有时间来完成项目了,我只好硬着头皮上架,做出了如下两个决定。

(1) 找学生会主席CH出面和学校沟通,再宽限5天,我们保证完成任务。 (2) 我尝试完成D的任务。

幸好学校很宽容,宽限了我们5天,而我只能通宵达旦??

2.6.1 留言数据显示

1. 留言数据显示模块

留言数据显示模块的功能是,将系统库内的留言信息以列表的样式显示出来,并提供新留言发布表单,将发表的数据添加到系统库中。上述功能的实现文件如下。

? 文件Index.aspx。 ? 文件Index.aspx.cs。 ? 文件Yanzhengma.aspx。 ? 文件AjaxService.cs。 1) 留言列表显示页面

文件Index.aspx的功能是,插入专用控件将系统内数据读取并显示出来,然后提供发布表单供用户发布新留言。其具体实现流程如下。

? 插入1个GridView控件,以列表样式显示库内的数据。 ? 在表格内显示各留言的数据内容。

? 添加3个链接供留言发布、留言回复和留言管理操作。

? 调用Ajax程序集内的DynamicPopulate控件,实现面板显示留言回复内容。 文件Index.aspx中,留言列表显示页面的主要实现代码如下。

<%@ Page Language=\ StylesheetTheme=\…

54

第2章 在线留言簿系统

作者:'><%# Eval(\于[<%# Eval(\、[<%# Eval(\留言


 >

上述代码执行后将在页面内显示系统内已存在的留言数据。 2) 留言发布表单

55

深入体验C#项目开发 本模块的功能是为用户提供新留言的发布表单,其具体实现流程如下。

? 插入5个TextBox控件,分别用于输入留言标题、IP地址、邮件地址、留言内容

和验证码。

? 插入TextBoxWatermark控件,用于确保留言标题不为空。 ? 调用TextBoxWatermark控件,用于确保邮件格式的合法性。 ? 调用ValidatorCallout控件,用于显示邮件非法提示水印效果。 ? 调用TextBoxWatermark控件,用于确保邮件内容的合法性。 ? 插入激活按钮,用于执行相关操作事件。

? 定义MessageValidator函数,用于确保留言内容大于10字符而不多于8000字符。 ? 调用验证码生成文件。

文件Index.aspx中,留言发布表单的主要实现代码如下。

留言标题: ErrorMessage=\标题不能为空!\

IP地址: ErrorMessage=\电子邮件格式不正确,请输入如下形式的电子邮件:


mmmm@nnn.com\\\w+([-.]\\w+)*\

56


深入体验C - 项目开发- 在线留言簿系统(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:牙膏策划方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: