建立ASP.NET資料存放區層(6)

來源:互聯網
上載者:User
asp.net|建立|資料 建立 ASP.NET 測試頁

  建立測試頁始終是訪問 SQL Server 資料層並驗證輸入和輸出參數是否得到正確處理的好辦法。實際上,這是確保以後的生產解決方案中的 ASP.NET 頁和組件能夠按照預期方式工作的唯一辦法。這對於從解決方案中的某個層調用其他層時的驗證信任邊界和安全性問題尤其正確。

  另外,在進行測試時,請勿拘泥於建立生產類介面。您只需測試目標方法。實際上,故意建立一些您不願以之為最終生產解決方案的“醜陋”測試頁是一個好的策略!本文中,我建立了一些非常簡單的 ASP.NET 頁,其中包含一個測試記錄列表和一個用於添加、編輯和刪除測試記錄的輸入表單。

  例如,以下是用於測試主題記錄的 WebForm 布局。您會發現,它包含錯誤訊息或其他訊息的狀態標籤、記錄計數標籤、顯示記錄列表的資料格、用於輸入檢索時使用的記錄 ID 的輸入框以及支援添加、編輯和刪除記錄的小表格(參見圖 10)。


圖 10:用於測試主題記錄的 WebForm 布局

  在建立測試頁時,最好使代碼簡潔明了。我通常會為每個按鈕添加一小段代碼,以調用本地方法來處理資料庫操作。以下是 TopicTest.aspx 頁上 Get Record(擷取記錄)按鈕的代碼。

Private Sub btnGetTopic_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)  Handles btnGetTopic.Click
 Try
  Dim ID As Integer = Int32.Parse(txQueryID.Text)
  GetItem(ID) ' 進行資料庫調用
  txID.Text = txQueryID.Text
  txTitle.Text = mTitle
  txDescription.Text = mDescription
  lbStatus.Text = "success!"
 Catch ex As Exception
  lbStatus.Text = ex.Message
 End Try
End Sub
  請注意,本方法中實際執行的唯一操作是由 GetItem(ID) 方法調用處理的。它執行資料庫調用並使用返回的值設定本地變數。以下是 GetItem 方法的代碼。請注意,它使用了大量的 SqlParameter 對象來處理輸入和輸出值。

Private Sub GetItem(ByVal ID As Integer)
Try
 pr = New SqlParameter("RETURN_VALUE", SqlDbType.Int)
 pr.Direction = ParameterDirection.ReturnValue
 Dim pTitle As SqlParameter = New SqlParameter
 With pTitle
  .Direction = ParameterDirection.Output
  .DbType = DbType.String
  .ParameterName = "@Title"
  .Size = 30
 End With
 Dim pDescription As SqlParameter = New SqlParameter
 With pDescription
  .Direction = ParameterDirection.Output
  .DbType = DbType.String
  .ParameterName = "@Description"
  .Size = 500
 End With

 cd = New SqlCommand

 With cd
  .CommandText = "TopicsGetItem"
  .CommandType = CommandType.StoredProcedure
  .Parameters.Add(New SqlParameter("@AdminCode", "adm"))
  .Parameters.Add(New SqlParameter("@ID", ID))
  .Parameters.Add(pTitle)
  .Parameters.Add(pDescription)
  .Parameters.Add(pr)
  .Connection = cn
  .Connection.Open()
  .ExecuteNonQuery()
  .Connection.Close()
 End With

 ' 檢查傳回碼
 If Not pr.Value Is Nothing Then
  Select Case Int32.Parse(pr.Value)
   Case 100 : Throw New ApplicationException("Access violation")
   Case 101 : Throw New ApplicationException("Invalid ID")
  End Select
 End If
 ' 設定傳回值
 mTitle = pTitle.Value.ToString()
  mDescription = pDescription.Value.ToString()
Catch ex As Exception
 Throw New Exception(ex.Message, ex)
End Try
End Sub
  GetItem 方法的另一個重要方面是使用了傳回值參數。它在前幾行代碼中進行聲明,並在執行預存程序後進行檢查。請注意,我檢查了已知錯誤碼 100 和 101。有關其他錯誤的處理方法,我們將在以後介紹如何建立成熟的中介層時進行介紹。問題在於,我要利用傳回值並在需要時拋出一個自訂異常。

  對於本解決方案樣本,我最終產生了六個 Web 表單,並用它們測試了將近 30 個預存程序和自訂函數。您可在本文開始部分列出的下載軟體包中找到所有這些完成的表單。

  現在我們已經定義了表、建立了預存程序和函數並產生了 ASP.NET Web 表單,因此可以使用 Visual Studio .NET 2003 產生資料庫層的安裝指令碼了。資料庫管理員(有時是您自己)可以將此指令碼應用到生產伺服器上。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.