用Asp.net實現基於XML的留言簿

來源:互聯網
上載者:User
一.概要:

  留言簿是網站的一個重要組成部分,是訪問者發表意見的場所,也是網站管理員瞭解網站基本情況的有力工具。所以留言簿在現在的網站中扮演了重要的角色。

  可是在以前開發一個留言簿並不是一件容易的事,開發人員的工作量往往會很多。而現在隨著微軟推出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也有它的不足之處,就是當資料庫很大時,解析過程會花費相當長的時間,因此還是要採用大型的資料庫系統的。所以,我只想通過此文起到拋磚引玉的作用。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.