從ASP遷移至ASP+--最初的考慮(二) (轉)

gugu99發表於2007-10-13
從ASP遷移至ASP+--最初的考慮(二) (轉)[@more@]

 

最初的考慮(二)
作 者 : 雨晨


   運用和在一個單獨模組中建立一個普遍性的連線相同的構想,我們建立了一個Pagelet。Pagelet使開發人員可以建立偽,偽控制元件和一樣可以用來顯示屬性,方法以及事件。我們的方案是:建立一個顯示ConnectTo方法的Pagelet,該方法返回一個ADOConnection物件(與ADO的語法稍有不同)。我們用下面的程式碼建立Pagelet,將它存為connect.c(副檔名錶明它是一個Pagelet)

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

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

   < script language="VB" runat="server">

   Public Function ConnectToDB() As ADOConnection

   ConnectToDB = New ADOConnection("DSN=evilleDSN")

   End Function

   < /script>

   你會注意到我們匯入了兩個Namespaces,即System.Data和System.Data.ADO。為了使用ADO+ Managed Provr這些Namespaces是必須的。許多人就此問了我許多問題,因為目前多數示例都使用基於 SERVER 2000的SQL Managed Provider。對於非 資料庫,ASP+可以使用ADO+ Managed Provider,這和目前你在中使用ADO的方式大致相同。匯入Namespaces和在VB程式中建立參考(Reference)有異曲同工之妙。

   Pagelet的運用使我可以維護當前的站點計劃,一旦在模組中建立了連線,我們就可在任何需要的地方重用模組。這意味著我們需要用Pagelet的一個例項來替代Include指令,然後當我們需要資料庫連線時ConnectToDB方法。在需要使用Pagelet的頁面中,我們首先必須使用ASP+指令將之與該頁面註冊(register)。在指令中,我們定義TagPrefix,TagName,以及(src)。與ASP中的include檔案類似,在我們放置Pagelet的地方要用到TagPrefix和TagName。

   < %@ Register TagPrefix="seven" TagName="Connect"

   src="_includes/connect.aspc" %>

   放置我們剛註冊的Pagelet的方法與ASP+控制元件類似:

   < [TagPrefix]:[TagName] id=myPagelet runat=server />

   比如:

   < seven:Connect id=Connect runat=server />

   在ADO+中,記錄集(Recordset)的概念被DataSets和DataViews的組合所取代。一會兒我們將討論這兩個概念。首先讓我們看看在default.asp頁面遷移至default.(ASP+頁面的字尾)後程式碼都有了哪些改變。先看default.asp:

   < !-- #include file="_includes/connect.inc" --&gt

   < %

   Dim cnEville_DB, rsUpcoming, strSqlUpcoming

   Set rsUpcoming = Server.Create("ADODB.Recordset")

   strSqlUpcoming = " TOP 2 " & _

   "Classes.Title, Sessions.Session_ID, " & _

   "Sessions.Special, Classes.Description " & _

   "FROM Classes INNER JOIN Sessions ON " & _

   "Classes.Class_ID = Sessions.ClassID " & _

   "WHERE (((Sessions.Date)>Date())) " & _

   "ORDER BY Sessions.Date"

   rsUpcoming.Open strSqlUpcoming,cnEville_DB

   %>

   在ASP+中成了default.aspx:

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

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

   < %@ Register TagPrefix="seven" TagName="Connect" &_

   src="_includes/connect.aspc" %>

   < script language="vb" runat=server>

   Sub Page_Load(Source As Object, E As EventArgs)

   Dim dscUpcoming As ADODataSetCommand

   Dim dsUpcoming As New DataSet

   Dim strSQL As String

   strSQL = "SELECT TOP 2 Classes.Title," & _

   "Sessions.Session_ID, Classes.Description " & _

   "FROM Classes INNER JOIN Sessions ON " & _

   "Classes.Class_ID = Sessions.ClassID " & _

   "WHERE (((Sessions.Date)>Date())) " & _

   "ORDER BY Sessions.Date"

   dscUpcoming = New ADODataSetCommand(strSQL, Connect.ConnectToDB())

   dscUpcoming.FillDataSet(dsUpcoming, "Upcoming")

   End Sub

   < /script>

   資料訪問的核心,ANSI-SQL語句在轉換後沒有什麼改變。然而正如你所看到的,建立記錄集的結構發生了改變,我們使用的是ADODataSetCommand和DataSet。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-976321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章