分享
 
 
 

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

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

一.概要:

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

可是在以前开发一个留言簿并不是一件容易的事,开发者的工作量往往会很多。而现在随着微软推出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也有它的不足之处,就是当数据库很大时,解析过程会花费相当长的时间,因此还是要采用大型的数据库系统的。所以,我只想通过此文起到抛砖引玉的作用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有