av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

用C#創(chuàng)建Web應(yīng)用程序

系統(tǒng)需求:

Internet Explorer 5.5

Windows 2000 Professional, Server 或 Advanced Server

ASP+/Microsoft .NET (預(yù)覽版可以在 http://msdn.microsoft.com/net 下載)

SQL Server 7.0 + SP1 或更高版本

使用微軟.NET的高級(jí)對(duì)象模型(Advanced Object Model)可以快速建立安全的,易于升級(jí)性的Web應(yīng)用程序。

微軟的.NET是一個(gè)開(kāi)發(fā)商業(yè)解決方案的理想技術(shù)。.NET技術(shù)結(jié)合C#的彈性和高性能,開(kāi)發(fā)商業(yè)程序比以往僅僅使用ASP的方法更為簡(jiǎn)單。

在這篇文章里,我們將使用.NET和C#來(lái)建立一個(gè)簡(jiǎn)單的商業(yè)應(yīng)用程序--一個(gè)能夠讓客戶(hù)瀏覽你的產(chǎn)品目錄的程序。

這個(gè)程序包含了最基本的.NET和C#技術(shù),在本文中,將涉及到如何建立和編譯C#的商業(yè)應(yīng)用層組件。也將談到怎樣使用ASPX頁(yè)面存取組件和綁定數(shù)據(jù)。綜合使用這些技術(shù),可以花費(fèi)比傳統(tǒng)的ASP方法更少的時(shí)間建立Web應(yīng)用程序。

穩(wěn)固的.NET應(yīng)用程序仍然依靠于穩(wěn)固的數(shù)據(jù)庫(kù)計(jì)劃和精心編寫(xiě)的存儲(chǔ)過(guò)程。

應(yīng)用程序可以通過(guò)組件調(diào)用已經(jīng)寫(xiě)好的存儲(chǔ)過(guò)程。大部分多層方法都不推薦直接從程序中調(diào)用數(shù)據(jù),那樣會(huì)降低程序的速度,也不利于調(diào)試。

本文主要討論C#和ASP+,不過(guò)多的討論建立數(shù)據(jù)庫(kù)和存儲(chǔ)過(guò)程。

組件的開(kāi)發(fā)

我們將要編寫(xiě)的c#組件同時(shí)作為邏輯層和數(shù)據(jù)存取層。

如果打算將來(lái)把程序移植到另一種數(shù)據(jù)庫(kù)中,比如Oracle,那么需要把邏輯層和數(shù)據(jù)存取層分別放在兩個(gè)組件中。本文中只使用SQL Server,所以不需要分開(kāi)它們。

這個(gè)應(yīng)用程序需要兩個(gè)頁(yè)面:Default.aspx 和 ProductList.aspx。 Default.aspx 是用戶(hù)訪問(wèn)Web首先看見(jiàn)的頁(yè)面,它列出所有的產(chǎn)品種類(lèi)。用戶(hù)從Default.aspx菜單中選擇種類(lèi)后,將進(jìn)入ProductList.aspx頁(yè)面,這個(gè)頁(yè)面顯示了當(dāng)前類(lèi)所有產(chǎn)品的列表。

在用戶(hù)使用這兩個(gè)頁(yè)面的過(guò)程中,發(fā)生了兩個(gè)動(dòng)作:***個(gè)是在菜單中列出產(chǎn)品種類(lèi)(Default.aspx),第二個(gè)是在產(chǎn)品列表的頁(yè)面中列出產(chǎn)品(ProductList.aspx)。我們可以建立兩個(gè)函數(shù)來(lái)完成這兩個(gè)任務(wù),這兩個(gè)函數(shù)都通過(guò)調(diào)用存儲(chǔ)過(guò)程獲取數(shù)據(jù)。對(duì)應(yīng)這兩個(gè)函數(shù),我們?cè)谝粋€(gè)叫做CommerceDotNet的名字空間中建立起兩個(gè)類(lèi):Category 和 Product。(圖1)使用CommerceDotNet.Categories實(shí)例化Categories類(lèi),使用CommerceDotNet.Products實(shí)例化Products類(lèi)。為了使代碼清晰,我們?cè)诓煌奈募蟹謩e聲明這兩個(gè)類(lèi)。由于他們共享一個(gè)名字空間,即使在不同的文件聲明,在編譯后也將成為一個(gè)單獨(dú)的組件。

CategoryList方法傳遞了一個(gè)包含所有產(chǎn)品種類(lèi)的數(shù)據(jù)集給系統(tǒng)。在Categories類(lèi)中加入CategoryList的方法。

代碼如下:

namespace CommerceDotNet { 

   public class Categories { 

     public DataSet CategoryList() { 

     } 

   } 

   } 

#p#

建立了這個(gè)類(lèi)以后,開(kāi)始為CategoryList方法添加代碼。

CategoryList方法獲取數(shù)據(jù)的過(guò)程分為四步:1.通過(guò)SQLConnection和SQLDataSetCommand對(duì)象建立數(shù)據(jù)連接和命令對(duì)象。2.把命令對(duì)象類(lèi)型設(shè)置為存儲(chǔ)過(guò)程。3.把存儲(chǔ)過(guò)程ListCategory的結(jié)果送入數(shù)據(jù)集。4.把包含結(jié)果的數(shù)據(jù)集返回給調(diào)用它的函數(shù)。

完整的CategoryList方法代碼如下:

 public DataSet CategoryList() { 

     // 建立數(shù)據(jù)連接和命令對(duì)象 

     SQLConnection myConnection = new SQLConnection 

     ("server=localhost;uid=sa;pwd=;database=commercedotnet"); 

     SQLDataSetCommand myCommand = new SQLDataSetCommand("ListCategory", myConnection); 

     // 設(shè)置命令對(duì)象類(lèi)型為存儲(chǔ)過(guò)程 

     myCommand.SelectCommand.CommandType = CommandType.StoredProcedure; 

     // 建立和填充數(shù)據(jù)集 

     DataSet myDataSet = new DataSet(); 

     myCommand.FillDataSet(myDataSet, "CategoryList"); 

     // 返回?cái)?shù)據(jù)集 

     return myDataSet; 

   } 

ProductsList方法和CategoryList方法類(lèi)似,但是ProductsList向存儲(chǔ)過(guò)程傳遞了一個(gè)參數(shù)。

代碼如下:

public DataSet ProductsList(int categoryID) { 

     // 建立數(shù)據(jù)連接和命令對(duì)象 

     SQLConnection myConnection = new SQLConnection 

     ("server=localhost;uid=sa;pwd=;database=commercedotnet"); 

     SQLDataSetCommand myCommand = new SQLDataSetCommand("ListProducts", myConnection); 

     // 設(shè)置命令對(duì)象類(lèi)型為存儲(chǔ)過(guò)程 

     myCommand.SelectCommand.CommandType = CommandType.StoredProcedure; 

     // 向存儲(chǔ)過(guò)程傳遞參數(shù) 

     SQLParameter parameterCategoryID = new SQLParameter("@CategoryID", SQLDataType.Int, 4); 

     parameterCategoryID.Value = categoryID; 

     myCommand.SelectCommand.Parameters.Add(parameterCategoryID); 

     // 建立和填充數(shù)據(jù)集 

     DataSet myDataSet = new DataSet(); 

     myCommand.FillDataSet(myDataSet, "Products"); 

     // 返回?cái)?shù)據(jù)集 

     return myDataSet; 

   } 

兩個(gè)類(lèi)都建立好以后,編譯程序。

使用命令:

csc /out:../bin/CommerceDotNet.dll /t:library /r:System.Data.dll CategoryDB.cs ProductDB.cs

"/out:"開(kāi)關(guān)指定編譯庫(kù)名和存放位置,"/t:"開(kāi)關(guān)告訴編譯器建立庫(kù),"/r:"開(kāi)關(guān)指出組件涉及到的其他庫(kù),完整的源程序在文末后面列出。

ASP+頁(yè)面的開(kāi)發(fā)

建立好組件以后,下面的工作是開(kāi)發(fā)作為用戶(hù)界面ASP+頁(yè)面。前面的部分,我們?cè)O(shè)計(jì)了default.aspx 和 productslist.aspx 頁(yè),Default.aspx頁(yè)是站點(diǎn)被裝入后的***頁(yè),我們就從建立這個(gè)缺省頁(yè)面開(kāi)始。

當(dāng)頁(yè)面讀入時(shí),觸發(fā)Page_Load()方法,這個(gè)方法完成了從數(shù)據(jù)庫(kù)獲取的數(shù)據(jù)并綁定到MyList的任務(wù)。首先,聲明一個(gè)ICollection型變量menuItems。然后,實(shí)例化組件,調(diào)用CategoryList方法,把數(shù)據(jù)集存放在menuItems對(duì)象中。設(shè)置MyList的數(shù)據(jù)源為menuItems。執(zhí)行MyList.DataBind方法把數(shù)據(jù)綁定到MyList。

這部分代碼如下:

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

   void Page_Load(Object sender, EventArgs e) { 

   ICollection menuItems; 

     CommerceDotNet.Categories categories = new CommerceDotNet.Categories();

menuItems = categories.CategoryList().Tables[0].DefaultView; 

     MyList.DataSource = menuItems; 

     MyList.DataBind(); 

   } 

   </script> 

default.aspx中其他代碼與傳統(tǒng)的ASP頁(yè)面類(lèi)似,請(qǐng)參見(jiàn)文末列出的代碼。

ProductList.aspx與default.aspx類(lèi)似,但是,綁定數(shù)據(jù)的代碼有些變化,因?yàn)?,在開(kāi)發(fā)C#組件的時(shí)候,我們?cè)贑ommerceDotNet.ProductsList方法中向存儲(chǔ)過(guò)程中傳遞了參數(shù),所以,ASP+頁(yè)面中也需要有相應(yīng)的變化。

CommerceDotNet.Products products = new CommerceDotNet.Products();

MyProductList.DataSource = products.ProductsList(categoryId).Tables[0].DefaultView;

MyProductList.DataBind();

至此,兩個(gè)ASP+頁(yè)面也創(chuàng)建完畢。

這樣,結(jié)合C#和ASP+的最基礎(chǔ)的應(yīng)用程序就創(chuàng)建好了。

這個(gè)程序展示了微軟.NET和C#技術(shù)的強(qiáng)大威力,在這個(gè)基礎(chǔ)上,再作進(jìn)一步的增添和修改,很容易開(kāi)發(fā)出強(qiáng)大的站點(diǎn)。

【編輯推薦】

  1. 跟MVP學(xué)C#視頻教程
  2. 如何使用C#與XML創(chuàng)建動(dòng)態(tài)分層菜單
  3. C#中的Namespace詳解

網(wǎng)站題目:用C#創(chuàng)建Web應(yīng)用程序
分享URL:http://uogjgqi.cn/article/ccosjdj.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流