ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 用Asp.net实现基于XML的留言簿

用Asp.net实现基于XML的留言簿

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-01-05 16:44:51 0 删除 编辑
 一.概要:

  留言簿是网站的一个重要组成部分,是访问者发表意见的场所,也是网站管理员了解网站基本情况的有力工具。所以留言簿在现在的网站中扮演了重要的角色。

  可是在以前开发一个留言簿并不是一件容易的事,开发者的工作量往往会很多。而现在随着微软推出VS.net,相应的技术推陈出新。特别是XML在.net Framework中的广泛运用,使得整个.net构架具有十分优越的基础。在VS.net推出的同时,也伴随而来了一门新兴的语言C#。C#作为微软.net战略的重要部分,具有特别优秀的性能。所以本文的asp.net程序是用C#语言描述的,同时整个程序又是基于XML的。我用到了XML作为程序的数据库,主要是因为所以的服务器都是支持XML文件的。

  二.要求:

  (1) .Net SDK Beta2及以后版本

  (2) 支持Asp.net的Web服务器

  三.说明:

  本文的实例由两部分组成:

  (1) guestpost.aspx-将用户信息添加到一个XML文件中

  (2) viewguestbook.aspx-先建立一个数据集对象,建立后,就很容易显示其中的数据了。我这里用到了一个“Repeater”来显示数据集中的数据。还有,读者可试着根据自己的喜好来修改查看页。

  四.代码:

  (1) guestpost.aspx:

   < %@ Page Language="C#" EnableSessionState="False" % >
  < %@ Import Namespace="System" % >

  < %@ Import Namespace="System.IO" % >

  < %@ Import Namespace="System.Data" % >

  < %-- 这些是本程序正常运用所必须的名字空间 --% >

  < html >

  < head >

  < title >欢迎来到我的留言簿< /title >

  < script. Language="C#" runat="server" >

  ///< summary >

  /// 当提交(submit)按钮按下后,调要这个函数

  ///< /summary >

  public void Submit_Click(Object sender, EventArgs e)

  {

  //保存数据的XML文件的路径

  //如果你的路径和下面的不同,则请修改之

  string dataFile = "db/guest.xml" ;

  //运用一个Try-Catch块完成信息添加功能

  try{

  //仅当页面是有效的时候才处理它

  if(Page.IsValid){

  errmess.Text="" ;

  //以读的模式打开一个FileStream来访问数据库

  FileStream fin;

  fin= new FileStream(Server.MapPath(dataFile),FileMode.Open,

  FileAccess.Read,FileShare.ReadWrite);

  //建立一个数据库对象

  DataSet guestData = new DataSet();

  //仅从数据库读取XML Schema

  guestData.ReadXmlSchema(fin);

  fin.Close();

  //从数据集的Schema新建一个数据行

  DataRow newRow = guestData.Tables[0].NewRow();

  //用相应值填写数据行

  newRow["Name"]=Name.Text;

  newRow["Country"]=Country.Text;

  newRow["Email"]=Email.Text;

  newRow["Comments"]=Comments.Text;

  newRow["DateTime"]=DateTime.Now.ToString();

  //填写完毕,将数据行添加到数据集

  guestData.Tables[0].Rows.Add(newRow);

  //为数据库文件新建另一个写模式的FileStream,并保存文件

  FileStream fout ;

  fout = new FileStream(Server.MapPath(dataFile),FileMode.Open,

  FileAccess.Write,FileShare.ReadWrite);

  guestData.WriteXml(fout, XmlWriteMode.WriteSchema);

  fout.Close();

  //隐藏当前的面板

  formPanel.Visible=false;

  //显示带有感谢信息的面板

  thankPanel.Visible=true;

  }

  }

  catch (Exception edd)

  {

  //捕捉异常

  errmess.Text="写入XML文件出错,原因:"+edd.ToString() ;

  }

  }

  < /script. >

  < LINK href="mystyle.css" type=text/css rel=stylesheet >

  < /head >

  (2) viewguestbook.aspx:

  < %@ Page Language="C#" % >

  < %@ Import Namespace="System" % >

  < %@ Import Namespace="System.IO" % >

  < %@ Import Namespace="System.Data" % >

  < %-- 以上是所需的名字空间 --% >

  < html >

  < head >

  < title >欢迎来到我的留言簿< /title >

  < script. language="C#" runat=server >

  //页面下载完毕后,运行这个脚本

  public void Page_Load(Object sender, EventArgs e)

  {

  //包含所有数据的XML文件的路径

  //如果你的路径和下面的不同,则请修改

  string datafile = "db/guest.xml" ;

  //运用一个Try-Catch块完成信息读取功能

  try

  {

  //建立一个数据集对象

  DataSet guestData = new DataSet();

  //为数据库文件打开一个FileStream

  FileStream fin ;

  fin = new FileStream(Server.MapPath(datafile),FileMode.Open,

  FileAccess.Read,FileShare.ReadWrite) ;

  //把数据库中内容读到数据集中

  guestData.ReadXml(fin);

  fin.Close();

  //将第一个表中的数据集付给Repeater

  MyDataList.DataSource = guestData.Tables[0].DefaultView;

  MyDataList.DataBind();

  }

  catch (Exception edd)

  {

  //捕捉异常

  errmess.Text="不能从XML文件读入数据,原因:"+edd.ToString() ;

  }

  }

  < /script. >

  < LINK href="mystyle.css" type=text/css rel=stylesheet >

  < /head >

  五.总结:

  这个程序完成了,相信大家对实现原理以及技巧都有了大致的了解。通过本文,我主要是想向大家展示用XML处理一些数据库问题时的优点:服务器都支持XML文件,而且处理过程相当简洁明了。当然,用XML也有它的不足之处,就是当数据库很大时,解析过程会花费相当长的时间,因此还是要采用大型的数据库系统的。所以,我只想通过此文起到抛砖引玉的作用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-526848/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5347648