史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 程式 & 網頁設計技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2006-06-09, 12:19 AM   #1 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 軟體 - ASP.NET資料庫編程快速入門之技術慨述

ASP.NET資料庫編程快速入門之技術慨述

  大約有將近一百萬名開發人員使用了.NET Framework的第一個版本來開發網站。所以在2003年的夏天,當從Microsoft傳出將有新版本發佈的傳聞時,許多人的耳朵都豎了起來,這個新的版本將使得創建ASP.NET網頁面所需的代碼行數減少70%。像這樣大規模的提高生產效率在程式設計中是不多見的。當ASP.NET 2.0的代碼樣例在2003年秋的Microsoft專業開發人員大會(Microsoft Professional Developer』s Conference)上演示時,結果比預計的還要好。以前使用ASP.NET的第一個版本程式員需要花費幾個小時才能做出的網頁面,現在使用ASP.NET 2.0只需要幾分鐘就完成了。簡單來說,在.NET Framework 2.0最終版本發佈之後,任何繼續使用第一個版本創建ASP.NET網頁面的程式人員都將花費大量的額外時間才能達到相同的結果。

  也許就像其他任何領域一樣,ASP.NET 2.0所提供的優勢是能夠方便地將資料整合進網頁面。程式員不再需要知道詳細的連接、命令以及資料閱讀器和資料適配器對象,就能執行普通資料任務了。對於初學者掌握能力,ASP.NET 2.0使得基本資料的使用簡單易學,並且有能力進行更複雜的資料應用。

  .NET Framework

  Microsoft開發出了作為基本原理的.NET和一系列技術,用於在互連網中讓電腦共同工作。總的目標就是讓訊息和工作行程在大範圍的系統和設備之間順暢地交流。.NET不是一種語言,也不是一個特別的產品。更確切地說,它是一套標準和規範,並已經應用於自2002年以來Microsoft發佈的所有產品中。

  .NET包含了一種使用開放標準的XML格式交換訊息的標準化格式。可擴展標記語言(Extensible Markup Language,XML)不需要請求者具備任何有關資料存儲如何儲存訊息的專門知識—— 資料都以自描述的XML格式取出。同樣地,目前幾乎所有的資料存儲都可以用XML來提供訊息,這對於所有.NET資料客戶都具有吸引力。

  .NET支持軟件的Web Services標準,可請求在使用了開放平台標準的簡單對像訪問協議(Simple Object Access Protocol,SOAP)和XML的遠端軟件上執行代碼。.NET網站可以從另外一個網站上找到該網站所提供的服務,並使用這些服務。這樣可以使得網站從其他的網站上獲得HTML、計算後的結果或者資料集。

  作為.NET開端的一部分,Microsoft發佈了一套執行時編程工具和應用編程接頭(API),稱為.NET Framework,讓開發團隊能夠創建.NET應用程式和XML Web Services。.NET Framework由公共語言執行庫(Common Language Runtime,CLR)和一套統一的類庫組成。

  CLR為執行的應用程式提供了一個完全管理的執行環境,其中包括幾個服務,例如程式集裝載和卸載、工作行程和記憶體的管理、安全實施以及即時編譯等。CLR名稱的意思就是指能夠用多種語言編寫應用程式,並且將源代碼編譯成CLR能夠讀懂並執行的中間語言,而無需考慮原來所使用的語言。這種「語言獨立性」就是CLR的關鍵特性(也是ASP.NET的特性),它允許開發人員使用自己喜歡的語言工作,比如C#、VB或者Cobol,都能夠獲得.NET Framework的常用特性。

  .NET Framework還包括了一套類庫,這套類庫提供了每一個應用程式所需的常用功能。可以使用.NET Framework支持的任何語言來訪問這些類庫。由這些類庫提供的服務(以及相應的命名空間)如下:

  · 基本類型(System)

  · 輸入/輸出(System.IO)

  · 資料訪問(System.Data)

  · 安全(System.Security)

  · 資料結構(System.Collections)

  · 配置(System.Configuration)

  · 連網(System.Net)

  · 反射(System.Reflection)

  · 全球化(System.Globalization)

  · 繪畫和製圖(System.Drawing)

  · 跟蹤和診斷(System.Diagnostics)

  · 視窗(客戶端)應用程式模型(System.Windows.Forms)

  · Web應用程式模型(System.Web)

  注意,.NET Framework包含了兩個應用程式編程模型,一個用於客戶端應用程式(System.Windows.Forms),另一個用於基於Web的應用程式(System.Web)。本書著重講解後一個模型。.NET Framework中的System.Web命名空間是.NET Framework的一部分,它提供了ASP.NET功能。換句話說,ASP.NET就是構建應用程式的所有.NET Framework的一部分。

  ASP.NET

  ASP.NET是一種用於創建基於Web的應用程式的編程模型。從本質上來說,執行時和.NET Framework類庫集可以用於創建動態Web頁。它需要在Web服務器的環境中執行,例如Microsoft Internet Information Server(Microsoft互連網訊息服務器,IIS),並且根據服務瀏覽器請求指示在服務器上執行程式。與直接由Web服務器提供的靜態HTML不同的是,ASP.NET網頁面實際上是在服務器上執行以後再產生結果的。網頁面的最後產生也許是由許多不同的指令和/或資料源構造的。

  ASP.NET網頁面以.aspx延伸名存儲。網頁面由程式員將文本、標記(例如HTML)以及ASP.NET特定服務器標記和腳本組合在一起,然後存儲在Web服務器上。可以將存儲後的ASP.NET網頁面看成是一套描述如何創建一個HTML網頁面的指令。當該網頁面被請求瀏覽時,服務器端程式將會用純標記來創建一個客戶端瀏覽器可以讀懂並能呈現(render)的網頁面。因為呈現後的輸出是純標記,所以任何瀏覽器都能夠讀懂;所有的動態過程都發生在Web服務器端。ASP.NET特定服務器標記非常強大,例如,它可以對用戶的動作作出反應,連接至資料存儲以及自動創建非常複雜的HTML結構。

  正像前面提到的那樣,ASP.NET只是.NET Framework的一部分,所以 ASP.NET網頁面可以利用這個框架提供的所有服務,包括連網、資料訪問、安全以及更多其他服務。因為ASP.NET可以使用所有這些服務,所以相比以前,能夠創建更加豐富的Web應用程式。只需花少量的時間來構建所有應用程式所需的構建塊,而將大多數時間用在應用程式獨有的特殊邏輯上。

  ASP.NET還在Web編程中引入了一些獨特的新技術,可以在典型的動態服務器網頁面(Active Server Pages,ASP)上極大地改善開發模式:

  · 語言獨立性——因為ASP.NET是.NET Framework的一部分,所以可以使用您自己選擇的語言來構建ASP.NET應用程式,例如C#、VB或J#。而典型的ASP則僅限於JScript或者VBScript網頁面。

  · 編譯而不是解釋——與典型的ASP在每一次網頁面請求時都解釋編程結構不同,ASP.NET在服務器端動態地將網頁面編譯成可以執行得非常快的本機編程指令。可以很明顯地看到典型的ASP網頁面的性能與相同ASP.NET網頁面的性能之間相差的數量級別。

  · 事件驅動編程模式——在典型的ASP中,網頁面總是以自頂向下的線性方式執行,並且HTML標記常常與程式指令混合在一起。任何一個有一定ASP經驗的人都知道這樣會使得網頁面難以閱讀,甚至更加難以維護。ASP.NET引入了事件驅動模型,這個模型允許您將代碼與標記內容分離,將代碼併入處理專門任務的有意義的單元中,例如響應客戶端的按鈕單擊動作。這個類似VB的事件模型極大地提高了網頁面的可讀性和可維護性。

  · 服務器控件——典型的ASP需要動態地將HTML片斷代碼接合在一起呈現,這樣做的結果就是在應用程式中一遍又一遍地編寫相同的代碼(您需要多少次才能從資料庫查詢中構建一張表格)。ASP.NET帶給Web編程的一個最大的好處就是能夠將公共的呈現和行為封裝成服務器控件(server control),可以在應用程式中很方便地重複使用。就像HTML標記一樣,服務器控件以聲明的形式創建,但是表現為一個位於服務器端的可編程對象,它可以與代碼進行交互並輸出定制的動態HTML呈現。ASP.NET包含了大約80多個服務器控件,這些控件封裝了從標準表單元素到複雜控件(如網格和表菜單)的所有內容。

  · 控件設計時間的改善(當使用Visual Web Developer時)—— 開發人員通過使用設計時間界面可以減少花費在開發複雜網頁面上的時間,這些界面包括敏捷任務面板、標籤級導航欄和可以設置控件內容的嚮導。 ASP.NET 2.0

  ASP.NET的第一個版本(1.0和1.1)在2001年至2003年間迅速風靡了Microsoft的開發陣營。程式人員很快便感覺到他們通過使用強大和靈活的.NET Framework可以大大減少編碼時間,而且CIO們也看到當程式員花在解決客戶代碼的疑難問題上的時間減少時,他們就可以將更多的資源投入到更高階的IT結構的改善上。ASP.NET確實是一個里程碑式的版本,它簡化了開發人員的工作。

  但是,就在第一個版本發佈之前,Microsoft的ASP.NET小組就已經在為開發ASP.NET 2.0而工作了。他們以下面雄心勃勃的目標來開始他們的工作:

  · 使創建一個典型的Web應用程式所需代碼行數減少70%。

  · 提供一套可擴展的應用程式服務,用來為通用應用程式任務提供構建塊,例如成員、角色、個人化以及導航等。

  · 創建一系列基於任務的服務器控件,這些控件可以調節上述服務,交付完全、可定制的用戶接頭(UI),以最小的代碼量來展示這些服務。

  · 當與.NET Framework協同工作提供網頁面服務時,改善IIS的性能。

  · 提供管理功能,以便加強ASP.NET服務器的部署、管理和執行。

  · 改善宿主公司所用的工具,以便可以支持多站點並能夠將開發人員的專案遷移至公共部署環境。

  · 讓ASP.NET的幾乎所有特性都能夠方便地擴展或者用定制的高階任務的執行替換。 在這裡,我們有必要再來細細地回想一下第一個目標,也就是使編寫一個動態Web應用程式所需的代碼量減少70%。這有可能嗎?Microsoft的ASP.NET小組已經仔細考慮過各種以定制代碼執行的通用任務,並且專門制定了將這些任務封裝進構建塊(特別是服務器控件)的方式,這樣就能夠自動地完成這些任務了。例如,大多數Web應用程式都需要安全或者導航或者個性化服務來為用戶提供定制的體驗。在ASP.NET 2.0中,這些任務是通過一系列可配置的應用程式服務,以及與這些應用程式服務進行對話的服務器控件來實現的,這樣可以極大地減少實施這些通用服務所需的應用程式的代碼量。但是,在所有這些通用任務當中,有一個任務是絕對獨立於其他應用程式的,這就是資料訪問服務。資料是驅動所有動態Web應用程式的公用線程,所以毫不奇怪,ASP.NET小組為了減少代碼量和在ASP.NET 2.0的應用程式中執行資料訪問所需的概念,而制訂了一些大膽的目標:

  · 在ASP.NET中可以通過聲明的(無代碼)方式來定義一個資料源。

  · 可以通過聲明的(無代碼)方式用UI控件顯示資料,無需在網頁面的執行生存期中的特定時間進行顯式的資料綁定。

  · 可以通過聲明的(無代碼)方式執行通用資料任務,例如排序、分頁、過濾、更新、插入以及刪除資料。

  · 可以使用多種UI控件來顯示資料,包括靈活的網格/詳細控件,該控件既可以顯示又可以操作資料。

  · 為創建定制的資料源,啟用可擴展的模型來支持新的資料類型。

  ASP.NET 2.0具有一些程式員可以使用的特定的服務器控件,用於在網頁面上新增資料交互。這些專門的資料控件分為兩組:資料源控件和資料綁定控件。資料源控件創建與資料庫的鏈接。資料綁定控件則從資料源控件獲取訊息,並在網頁面上創建呈現。這種簡單的雙控件模式可用於多種情況。對於多種資料庫類型,甚至是非關係型資料源,都有相應的資料源控件。同樣地,有多種資料綁定控件可用來在網頁面上產生表格、樹型、列表以及其他資料格式。在前面我們已對ASP.NET進行了介紹,同時講述了ASP.NET的一些理論,現在開始介紹本書剩餘部分的細節內容:資料源控件和資料綁定控件的使用。資料源控件以及附帶產品包括如下條目:

  · SqlDataSource控件,用於與Microsoft SQL Server和其他資料庫進行連接

  · AccessDataSource控件,用於與MDB文件連接

  · ObjectDataSource控件,用於與中間層對像連接

  · XMLDataSource控件,用於XML文件或者資料流

  · SiteMapDataSource控件,用於以ASP.NET 2.0站點地圖格式存儲的XML文件額外的控件已經由第三方開發。

  在資料綁定控件中,有很多與ASP.NET 1.x中的相似,有一些則是ASP.NET 2.0全新開發的:

  · ListBox、DropDownList和BulletedList、CheckBoxList、RadioButtonList

  · AdRotator是實現舊功能的資料綁定控件

  · DataList和Repeater以靈活的佈局方式提供資料

  · DataGrid(與ASP.NET 1.x中的相同)和GridView(第2個版本中的新控件)用於表格資料

  · DetailsView和FormView以輕鬆的導航提供記錄的訊息

  · TreeView用於顯示分級資料

  總之,資料源控件和資料綁定控件將會是本書重點介紹的對象。

  在.NET Framework 2.0公開beta版本發佈之前,少數的幾個程式組就已經被允許檢視工作代碼,並希望盡快獲得他們的反饋。結果,所有的反應只有一個,那就是熱烈,「太好了!」然後就是「什麼時候我才能用ASP.NET 2.0替換我的ASP.NET 1.x應用程式?」。現在beta發佈版本已經在手邊,我們無需再等待了。

  ADO.NET

  ADO.NET是.NET Framework中的一套類庫,它將會讓您更加方便地在應用程式中使用資料。Microsoft收集了過去幾十年中最佳的資料連接的實踐操作,並編寫代碼實現這些實踐。這些代碼被包裝進了一些對像中,以便其他軟件可以方便地使用。

  ADO.NET中的代碼處理了大量的資料庫特有的複雜情況,所以當ASP.NET網頁面設計人員想讀取或者寫入資料時,他們只需編寫少量的代碼,並且這些代碼都是標準化的。就像ASP.NET一樣,ADO.NET不是一種語言。它是對像(類)的集合,在對像(類)中包含了由Microsoft編寫的代碼。可以使用諸如Visual Basic或者C#等編程語言來在對像外部執行這些代碼。

  可以將ADO.NET看作是一個介於資料源和資料使用者之間的非常靈巧的轉換層。ADO.NET可以接受資料使用者語言中的命令,然後將這些命令轉換成在資料源中可以正確執行任務的命令。但是,就像您將會看到的那樣,ASP.NET 2.0提供了服務器端資料控件,可以更方便地與ADO.NET交互工作,所以有的時候這基本上減少了直接使用ADO.NET對象的需求。

  很多讀者已經有使用ASP.NET早期版本的經驗了。這一小節將回顧一下這種模式,目的是演示您需要通過ADO.NET對像將資料引入Web頁中的這一過程。對那些從來都沒有使用過早期版本的讀者來說,可以將本小節作為一個新奇的故事,類似於在發現乙醚之前進行的外科技術研究。在以前,創建一個簡單典型的ASP.NET 1.x版本的網頁面需要如下代碼:

<script runat="server">

Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

BulletedList1.DataSource = GetAuthorsByState("CA")

BulletedList1.DataBind()

End Sub

Shared Function GetAuthorsByState(ByVal state As String) As System.Data.DataSet

Dim connectionString As String =

"server=(local); database=pubs; trusted_connection=true"

Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)

Dim queryString As String = "SELECT [authors].[au_id], [authors].[au_fname], [authors].[au_lname], [authors].

[state] FROM [authors] WHERE ([authors].[state] = @state)"

Dim dbCommand As System.Data.IDbCommand = New System.Data.SqlClient.SqlCommand

dbCommand.CommandText = queryString

dbCommand.Connection = dbConnection

Dim dbParam_state As System.Data.IDataParameter = New System.Data.SqlClient.SqlParameter

dbParam_state.ParameterName = "@state"

dbParam_state.Value = state

dbParam_state.DbType = System.Data.DbType.StringFixedLength

dbCommand.Parameters.Add(dbParam_state)

Dim dataAdapter As System.Data.IDbDataAdapter = New System.Data.SqlClient.SqlDataAdapter

dataAdapter.SelectCommand = dbCommand

Dim dataSet As System.Data.DataSet = New System.Data.DataSet

dataAdapter.Fill(dataSet)

Return dataSet

End Function

</script>

<html><head runat="server"><title>Untitled Page/title></head>

<body>

<form id="form1" runat="server"><div>

<asp:BulletedList ID="BulletedList1" DataTextField= "au_lname" Runat="server" />

</div></form>

</body></html>

  以上示例對資料庫執行了一條簡單的SQL SELECT語句,並將結果與一個BulletedList控件綁定。網頁面中有一個名為GetAuthorsByState的方法,該方法創建了用來完成這個任務的幾個ADO.NET對像:

  · SqlConnection對像表示與資料庫服務器進行連接

  · SqlCommand對像表示要執行的SQL SELECT命令

  · SqlParameter對像代表了一個將被命令中的標記代替的值

  · SqlDataAdapter表示填充命令中的DataSet對象的能力

  · DataSet表示命令結果,可以與BulletedList進行綁定

  在Page_Load事件中,調用GetAuthorsByState方法並產生DateSet結果,然後將這個結果賦給BulletedList的DataSource內容。接著,調用DataBind()使得BulletedList用這個資料結果將自己同步。我們在網頁面執行生存期中的適當的時候調用DataBind(),這樣的做法是ASP.NET 2.0在一般情況下尋找並消除的一個關鍵步驟。實際上,在大多數情況下, ASP.NET 2.0根本不需要與ADO.NET進行交互操作。但是,理解上述ADO.NET對像之間的關係是非常有用的,這樣我們就可以討論 ASP.NET 2.0是如何改進這個模式的。

ASP.NET 2.0和資料訪問

  ASP.NET 2.0給我們提供了一個改良的資料訪問模式,這個模式減少了在 ASP.NET 1.x中執行資料綁定所需的代碼量。首先,無需編程實現實例化、設置內容以及調用前述列表中的ADO對象的方法。您需要做的就是在網頁面上簡單地新增服務器端控件並設置內容。當呈現網頁面時,ASP.NET 2.0將會自動地執行所有的對象實例化,並調用方法創建並顯示資料。請將以下ASP.NET 2.0代碼與上面的代碼進行對比:

<html>

<head runat="server"><title>Demo</title></head>

<body>

<form id="form1" runat="server">

<asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="SELECT au_lname FROM authors WHERE (state = @state)"

ConnectionString="Server=HPSERV; Integrated Security=True;Database=pubs">

<SelectParameters>

<asp:Parameter Type="String" DefaultValue="CA" Name="state" />

</SelectParameters>

</asp:SqlDataSource>

<asp:BulletedList ID="BulletedList1" runat="server" DataSourceID="SqlDataSource1"

DataTextField="Au_lname">

</asp:BulletedList>

</form>

</body></html>

  第二個改進來自於對在網頁面生存期中的事件敏感的服務器端控件。ASP.NET 2.0 服務器端控件能夠在正確的時間做出正確的動作。請注意在ASP.NET 2.0網頁面中對網頁面生存期中的事件的任何引用。ASP早期版本的學生一般都會對在網頁面生存期中執行多種任務感到迷惑,特別是資料綁定。因此,很多ASP.NET 1.x網頁面都會有這樣的讓程式員編寫代碼的遭遇,即在錯誤的事件下調用DataBind,或者在多個事件中多次調用DataBind。這些定時操作現在都可以通過ASP.NET 2.0的服務器端資料控件來自動完成。

  請注意在前面的ASP.NET 2.0的代碼中使用了兩個服務器端控件。第一個是資料源控件,本例中是SqlDataSource控件。該控件在後台建立了所有顯示資料所需的ADO連接對象,包括Connection、Command以及DataReader或者Dataset對象。然後,使用了一個名為BulletedList的資料綁定控件,用來獲取資料源控件的資料,並在網頁面上呈現。

  術語

  在完成介紹性內容之前,我將提供一個到目前為止所用到的術語表。

  · 動態Web頁—— 作為代碼存儲在Web服務器上的文件,當被請求時,可轉換為HTML。當網頁面被轉換時,他們可以根據用戶和網站擁有者的實時情況而按照不同的請求來獲取不同的表單。

  · IIS—— 在Windows中內置的Web服務器,用於通過TCP/IP向請求者提供Web頁。執行於Windows 2000或者Windows XP Professional上的IIS可以使用.NET Framework類來提供ASP.NET Web頁。

  · .NET Framework—— 一組包含Microsoft編寫的代碼的類,可以使得開發應用程式更加方便和快捷,並且更易於在互連網上執行。很多類都已經被封裝進能夠啟用.NET 的大約十多個Microsoft產品當中了。

  · CLR(公共語言執行庫)—— .NET Framework的一項特性,可以讓編程人員用多種語言編寫代碼,然後將代碼編譯成可用來部署的單獨、統一的語言。

  · ASP.NET—— .NET Framework中的執行時和類庫集,用來創建動態Web應用程式。

  · 資料存儲—— 資料被存放和管理的地方。所有的RDBMS都可用於資料存儲,但是有些資料存儲就不是RDBMS,因為它們不是關係型的。

  · 資料庫或關係型資料庫管理系統(RDMS)—— 一種可以讀取和操縱資料的軟件。大多數系統包含了用來設計和測試資料庫的工具,以及優化過程的工具。一個RDBMS必須按照標準化形式(關係型格式)存儲資料。

  · DataBase模式(或資料庫元資料)—— 資料庫結構,包括表和關係的設計。該模式不包括實際的資料值。

  · MicrosoftTM Access—— 一種基於MDB文件格式、JET引擎以及一系列用於創建和使用資料庫的工具的RDMS。Access價格便宜,容易學習,能被廣泛接受並且已經被部署到很多機器上。但是,它不支持太多的並發用戶。

  · JET—— 執行在後台並使用MDB(Access)文件的資料庫引擎。JET可以直接從其他軟件(例如.NET或Access)接受命令來讀取或者修改MDB文件。

  · 結構化查詢語言(Structured Query Language,SQL)—— 一種被資料使用者用來從資料提供程式那裡請求讀取或者寫入資料的語言。經過近十年的發展,SQL已經成為與RDBMS通信的標準。

  · MicrosoftTM SQL Server—— 一種企業級的RDBMS,可以支持大量的資料和大量的並發用戶。

  · MicrosoftTM SQL Server Express(SSE)—— 基於Microsoft SQL Server資料庫引擎的可免費獲得的資料庫引擎。與SQL Server不同的是,SSE能提供的同時資料連接數量有限,並且只有少數幾個功能。本書將在大多數示例中使用SSE。

  · MicrosoftTM Data Engine(MSDE)—— 與SSE類似,但是基於SQL Server引擎的早期版本。MSDE將在本書的練習中使用。

  · XML—— 一種標準的資料格式,每個值都被存儲並描述。XML不是非常有效率(用於描述的空間通常會超過資料的大小),但是卻能被很多不同的資料管理系統方便地讀取。

  · Web頁編輯器—— 一種允許打開和修改網頁面的軟件。最常用的編輯器是記事本。Visual Studio、Visual Web Developer和ASP.NET Web Matrix與其他工具壓縮打包成一個編輯器,用以提高效率。 · 整合開發環境(Integrated Development Environment,IDE)—— 一套用來幫助編程人員開發代碼的工具。Visual Studio就是一個非常強大的IDE;Web ASP.NET Web Matrix也提供了很多工具。典型的IDE應當包含一個Web頁編輯器。

  · ADO.NET—— 由Microsoft編寫的類(代碼)的集合,作為資料存儲(例如Access或者XML文件)和資料使用者(例如ASP網頁面)之間的中間件。

  · 連接—— 一個ADO對象,表示資料使用者和資料提供程式之間的惟一路徑。

  · 命令—— 一個ADO對象,表示一條可以被傳遞給資料庫的SQL語句。

  · 參數—— 一個ADO對象,表示在語句進入資料庫之前可以被插入Common Object(SQL語句)中的多個資料。

  · DataSet—— 一個ADO對象,表示整合至記錄或字段中的一組資料。

  · 服務器控件—— 一組獨立的代碼(一個對像),用於在服務器上執行任務,產生相容HTML的並且發送至瀏覽器的網頁面。通過ViewState,服務器端控件可以維持其狀態。

  · 資料源控件—— 一種服務器端控件,可以創建專門的、惟一的資料庫連接。它提供了ADO對象的一種抽像並且使得編寫ASP.NET 2.0網頁面更加快速和容易。資料源控件可用於Microsoft SQL Server、Access、XML以及其他資料源。

  · 資料綁定控件—— 一種服務器端控件,可以從資料源控件中獲得資料並在網頁面上呈現它。資料綁定控件將程式員從編寫諸如<table>的HTML標記中解脫出來。資料綁定控件可用於呈現表格、列表、樹型以及其他結構


ASP程式寫作入門
http://www.spps.tp.edu.tw/documents/memo/asp/asp.htm

此帖於 2006-06-09 11:58 PM 被 psac 編輯.
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
舊 2006-07-07, 06:04 PM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

教你5分鐘做成一個ASP論壇

一、建立文件!
最簡單的論壇也要有幾個必要的文件,就是:
1、資料庫,用來儲存發表的帖子!-------命名為:bbs.mdb
2、有資料庫就必須連接資料庫,該文件用來連接資料庫:----命名為:conn.asp
3、發表帖子的文件----命名為:say.asp
4、儲存發表帖子內容的文件-----命名為:save.asp
5、顯示帖子標題的文件------命名為:index.asp
6、顯示帖子內容的文件,即點擊標題後所進入的網頁面-----命名為:show.asp
二、各文件的主要內容
1、bbs.mdb
打開這個資料庫,建立一個表,命名為bbs
該表中有幾個字段:
id(自動給帖子編號),他的資料類型設為「自動編號」
name(用來儲存發表的作者),資料類型為「文本」
title(用來儲存帖子的主題),資料類型為「文本」
body(用來儲存帖子的內容),資料類型為「備註」
2、conn.asp
源代碼為:
<%
Server.scriptTimeout="10"
connstr="DBQ="+server.mappath("bbs.mdb"+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=Server.CreateObject("ADODB.connection"
conn.open connstr
%>
這個文件就是這樣,代碼內容大家就自己研究,這個我也不知道怎麼說才好!
3、say.asp
源代碼為:
<form method="POST" action="save.asp">
<p>大名:<input type="text" name="name" size="20"></p>
<p>標題:<input type="text" name="title" size="91"></p>
<p>內容:</p>
<p><textarea rows="11" name="body" cols="97"></textarea></p>
<p> </p>
<p><input type="submit" value="提交" name="B1"><input type="reset" value="重置" name="B2"></p>
</form>
大家應該看得懂的,這個根本就是html語法,對的,根本就是,這個只是發表的界面
不過要注意這一句<form method="POST" action="save.asp">,他把用戶所填的內容發送至save.asp這個文件,下面就看save.asp這個文件吧!
4、save.asp
源代碼:
<!--#include file="conn.asp"-->
<%name=Replace(Request.Form("name","』","』』"
title=Replace(Request.Form("title","』","』』"
body=Replace(Request.Form("body","』","』』"
%>
<%if name="" or title="" or body="" then%>
請<a href="javascript:history.go(-1)">後退</a>填寫完整資料,你才能發表帖子!
<%else%>
<%set savebbs=conn.execute("insert into bbs(name,title,body)values(』"&name&"』,』"&title&"』,』"&body&"』)"%>
發表成功!<a href="index.asp">檢視帖子</a>
<%end if
set savebbs=nothing
%>
第一句:<!--#include file="conn.asp"-->,意思是插入conn.asp文件,即與資料庫進行連接!
asp語句必須用<% %>這個格式包含起來,而插入文件的語句就不用,
接下來幾句:
name=Replace(Request.Form("name","』","』』"
title=Replace(Request.Form("title","』","』』"
body=Replace(Request.Form("body","』","』』"
「Replace(Request.Form("name","』","』』"」意思是接收表單中名為name的文本框發來的資料,
而「name=Replace(Request.Form("name","』","』』"」則是把發來的資料儲存在name變數中,
如果你這樣:「abc123=Replace(Request.Form("name","』","』』"」
就是把表單中名為name的文本框發來的資料儲存在abc123變數中
接著:if name="" or title="" or body="" then
判斷name、title和body變數中是否沒有填寫內容,即為"",如果這樣,就執行這一語句:
「請<a href="javascript:history.go(-1)">後退</a>填寫完整資料,你才能發表帖子!」
該語句屬於html語法,大家都看得懂的!
"<%else%>"就是說「當if……then不成立(即是說所有內容都已經填寫)」,就執行語句:
「<%set savebbs=conn.execute("insert into bbs(name,title,body) values(』"&name&"』,』"&title&"』,』"&body&"』)"%>
發表成功!<a href="index.asp">檢視帖子</a>」
"set save=conn.execute"屬於固定的語句,不過savebbs可以自己修改,"="後面的就難解釋了:
insert into bbs(name,title,body)意思是向名為bbs的表(在建立資料庫時已經建立的表)
中的name,title,body字段插入,插入什麼呢?看接下的values(』"&name&"』,』"&title&"』,』"&body&"』)"
values是「值」的意思
就是插入向量name,title,body,向量用格式』"&name&"』表示
最後:end if就是結束if……then
set savebbs=nothing可以說是關閉掉:
set savebbs=conn.execute("insert into bbs(name,title,body) values(』"&name&"』,』"&title&"』,』"&body&"』)"
5、index.asp
源代碼:
<!--#include file="conn.asp"-->
<b><a href="say.asp">發表帖子</a></b>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="26">
<tr>
<td width="17%"><b>作者</b></td>
<td width="83%"><b>主題</b></td>
</tr>
</table>
</center>
</div><hr size="1">
<%i=1
set showbbs=conn.execute("select*from bbs order by id desc"
do while not showbbs.eof
%>
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; " bordercolor="#000000" width="100%" height="20">
<tr>
<td width="17%"><%=showbbs("name"%> </td>
<td width="83%">
<a href="show.asp?id=<%=showbbs("id"%>"><%=showbbs("title"%></a></td>
</tr>
</table>
</center>
</div><hr size="1">
<%i=i+1
if i>50 then exit do
showbbs.movenext
Loop
showbbs.Close
set showbbs=nothing
%>
這個文件就不一句一句的講了
主要講精華部分:
set showbbs=conn.execute("select*from bbs order by id desc"
意思是:向資料庫中的bbs資料表查詢資料,並以id排順序,
還有這麼一句:<%=showbbs("name"%>
就是顯示資料表中的name字段的資料,這裡的showbbs就是set showbbs=……中的showbbs 代碼中的i=1和i=i+1
if i>50 then exit do
showbbs.movenext
Loop
showbbs.Close
set showbbs=nothing

這幾句屬於循環語句,這裡就不理他,理解了也不太好用,因為他只顯示50張貼子!
if i>50 then exit do中的50可以修改
但我們做論壇必須把帖子分頁,又因為分頁這個語句太複雜,我想就不講了,等這一個弄懂了才來弄
還有一句很有用的:
<a href="show.asp?id=<%=showbbs("id"%>"><%=showbbs("title"%></a>
裡面的超連接:show.asp?id=<%=showbbs("id"%>,注意:這裡的超連接把帖子的id包含了,
等一下在show.asp文件中就有用了

5、show.asp
源代碼:
<!--#include file="conn.asp"-->
<%id=request.querystring("id"%>
<%set show=conn.execute("select*from bbs where id="&id&""%>
<a href="index.asp">
<b>回到首頁</b></a>
<b><a href="say.asp">發表帖子</a></b>
<hr size="1">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" height="180">
<tr>
<td width="21%" height="22"><b>作者:</b><%=show("name"%></td>
<td width="79%" height="22"><b>主題:</b><%=show("title"%></td>
</tr> <tr>
<td width="100%" colspan="2" height="158" valign="top"><b>
內容:</b><%=show("body"%></td> </tr> </table><%set show=nothing%>
勁語句---精華語句:
id=request.querystring("id"
在講解index.asp文件的後面已經說到:show.asp?id=<%=showbbs("id"這一句,
id=request.querystring("id"就是把地址欄中的id的值讀取下來,
因為index.asp文件中的超連接點擊後,地址欄就為http://…………/show.asp?id=數位,
所以show.asp使用id=request.querystring("id"語句把數位讀取下來
於是接著使用:set show=conn.execute("select*from bbs where id="&id&""
向資料表查詢id為這時讀取下來的數位的帖子,即where id="&id&"
最後<%set show=nothing%>
好了,論壇就做成了,裡面的精華你就去吸取!
當然論壇不可能這麼簡單,他還有許多文件需要你去製作,這裡講的只是個別必需的功能
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:55 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1