中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 進(jìn)入 ASP.NET 世界
常見 Datagrid 錯誤 回到列表 改進(jìn) ASP 的字符串處理性能
 進(jìn)入 ASP.NET 世界

作者:Mike Amundsen 時間: 2004-03-24 文檔類型:轉(zhuǎn)載 來自:Microsoft

第 1 頁 應(yīng)用程序規(guī)劃與設(shè)計 [1]
第 2 頁 使用 SQL Server 2000 創(chuàng)建數(shù)據(jù)存儲層1 [2]
第 3 頁 使用 SQL Server 2000 創(chuàng)建數(shù)據(jù)存儲層2 [3]

本文僅代表作者個人觀點(diǎn),正確與否請讀者自行研究!

原文地址:http://www.microsoft.com/china/msdn/library/dnaspp/html/aspnet-jumpinto-part2.asp

下面是一個更復(fù)雜的存儲過程。此過程用于從數(shù)據(jù)庫中檢索單條主題記錄。您會發(fā)現(xiàn)一些附加項(xiàng),包括輸入?yún)?shù)、返回特定值的輸出參數(shù),以及檢查輸入?yún)?shù)并在需要時返回錯誤的某些程序代碼。

CREATE PROCEDURE TopicsGetItem
   (
      @AdminCode char(3),
      @ID int,
      @Title varchar(30) OUTPUT,
      @Description varchar(500) OUTPUT
   )
AS
   SET NOCOUNT ON -- 不返回受影響行的值
   -- 確保是一個 Admin 用戶
   IF @AdminCode<>'adm'
      BEGIN
         RETURN 100 -- 無效 admin 錯誤
      END
   -- 檢查記錄是否存在
   IF (SELECT Count(ID) FROM Topics WHERE ID=@ID)=0
      BEGIN
         RETURN 101 --- 無效 ID 代碼
      END
   -- 繼續(xù)執(zhí)行并返回該記錄
   SELECT 
      @Title=Title, 
      @Description=Description
   FROM 
      Topics
   WHERE 
      ID=@ID
   -- 返回錯誤,如果成功則返回 0
   RETURN @@ERROR
            

在本示例中,還有幾點(diǎn)需要指出。首先,您會在存儲過程頂端看到一個參數(shù)列表。除前兩個參數(shù)外,其他參數(shù)均被標(biāo)記為 OUTPUT 參數(shù)。這些參數(shù)用于返回選定記錄的值。使用一條記錄的返回值要比返回帶有所有字段的記錄集合更為高效。

其次,您會發(fā)現(xiàn)用于檢查 @AdminCode 參數(shù)值的 T-SQL 數(shù)據(jù)塊,以確保傳遞正確的代碼。如果傳遞的代碼不正確,則傳遞返回代碼 100 并停止執(zhí)行該過程。再其次,您會發(fā)現(xiàn)檢查 @ID 參數(shù),以確保其代表一條現(xiàn)有記錄。如果不是現(xiàn)有記錄,則傳送返回代碼 101 并終止執(zhí)行。最后,如果輸入變量都有效,存儲過程將嘗試選擇記錄并返回相應(yīng)的值。如果此時發(fā)生任何錯誤,將由該過程的最后一行代碼進(jìn)行處理。

注意:通常情況下,最好將自定義錯誤代碼及其含義保存在數(shù)據(jù)庫中的一個單獨(dú)的表格中,或保存在解決方案可以訪問的文本文件中。這樣就可以輕松更新這些錯誤代碼,并與解決方案中的其他子系統(tǒng)共享。因?yàn)檫@只是一個短小的示例,其中只使用了兩個錯誤代碼,所以我決定創(chuàng)建一個包含大量代碼和消息的文檔,以供其他子系統(tǒng)參考。

該解決方案中包含的存儲過程超過 25 個。本文僅舉一例進(jìn)行說明,其他代碼可以通過本文開始處的鏈接進(jìn)行下載。最后這個示例使用一個自定義的內(nèi)置標(biāo)量函數(shù)。

使用自定義標(biāo)量函數(shù)

有時,單獨(dú)一個存儲過程不足以解決問題。例如,我們的用戶方案中就有一個方案要求列出某個問題的解答數(shù)目。解決此問題的方法之一是生成一個對問題的解答進(jìn)行計數(shù)的子查詢。另外一種方法是生成一個自定義函數(shù),返回標(biāo)量值并將其包含在問題查詢中。這種方法還有一個好處,那就是我們可以在其他存儲過程中再次使用該標(biāo)量函數(shù)。

添加自定義函數(shù)的操作類似于添加存儲過程。在 Server Explorer(服務(wù)器資源管理器)樹中,在選定數(shù)據(jù)庫的 Functions(函數(shù))節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 New Scalar-Valued Function(新建標(biāo)量值函數(shù))。然后在編輯器中編輯該文檔,并像保存存儲過程那樣保存該文檔。

以下是自定義函數(shù)的代碼:

CREATE FUNCTION dbo.fn_QuestionsGetResponseCount
   (
      @ID int
   )
RETURNS int
AS
   BEGIN
      DECLARE @ResponseCount int
      Set @ResponseCount = 
      (
         SELECT 
            COUNT(Responses.ID) 
         FROM 
            Responses
         WHERE
            Responses.QuestionID=@ID
      )
      RETURN @ResponseCount
   END
            

以下是使用自定義函數(shù)的存儲過程:

CREATE PROCEDURE QuestionsGetCountWithNoResponses
   (
      @Total int OUTPUT
   )
AS
   SET NOCOUNT ON -- 不返回受影響行的值
   SELECT 
      @Total=Count(ID)
   FROM 
      Questions
   WHERE 
      dbo.fn_QuestionsGetResponseCount(Questions.ID)=0
   RETURN @@ERROR
            

了解如何編寫存儲過程和自定義函數(shù)之后,我們還將討論使用 Visual Studio .NET 2003 創(chuàng)建數(shù)據(jù)層時的另一個問題,即安全性問題。

IIS、ASP.NET 和 SQL Server 的安全性問題

SQL Server、Internet 信息服務(wù)器和 ASP.NET 引擎都提供了堅(jiān)實(shí)可靠的安全模型,它們可以很好地在一起協(xié)同工作。為了保證用戶數(shù)據(jù)和應(yīng)用程序的安全,Microsoft 還為每項(xiàng)服務(wù)的默認(rèn)設(shè)置設(shè)置了相當(dāng)?shù)偷闹怠4蠖鄶?shù)開發(fā)人員面臨的挑戰(zhàn)是如何使用 SQL Server、IIS 和 ASP.NET 在應(yīng)用程序和數(shù)據(jù)之間設(shè)置適當(dāng)?shù)男湃渭墑e,而不會留下可被別人輕易攻入的安全漏洞。由于涉及三類服務(wù)(SQL Server、IIS 和 ASP.NET),所以需要采取三個關(guān)鍵的步驟來確保解決方案的安全。本部分討論一種為 Web 應(yīng)用程序設(shè)置足夠權(quán)限和信任級別的更常用(且可靠)的方法。

注意:關(guān)于安全性和 Web 解決方案這個大主題,本系列文章難以展開較充分的討論。要更好地理解此問題和可能的解決方案,請參閱安全 ASP.NET 應(yīng)用程序的創(chuàng)建模式和實(shí)踐系列文章:驗(yàn)證、授權(quán)和安全通信。

定義 DotNetKB 自定義 IIS 用戶帳戶

保證 Web 應(yīng)用程序安全性的最安全的方法是定義一個權(quán)限有限的自定義用戶,然后對 IIS 進(jìn)行配置,使之能夠在執(zhí)行您的 Web 應(yīng)用程序時能作為自定義用戶運(yùn)行。這是相當(dāng)容易實(shí)現(xiàn)的,可以確保訪問您的 Web 應(yīng)用程序的每個訪問者都只具有您希望他們具有的權(quán)限。

第一步是生成一個新的 Windows 用戶(本例中稱為 DotNetKB),為其設(shè)置一個增強(qiáng)型密碼,然后將其添加到 Windows 來賓組 (Guest Windows Group) 中。同時,確保選中 Password never expires(密碼永不過期)和 User cannot change password(用戶不能更改密碼)復(fù)選框。這樣將生成一個權(quán)限有限的用戶,在 IIS 中運(yùn)行您的 Web 應(yīng)用程序時,您可以將其用作標(biāo)識(參見圖 7)。

圖 7:生成的權(quán)限有限的用戶

然后,調(diào)用 Internet 信息服務(wù)器管理員并選擇承載這些網(wǎng)頁的 Web 應(yīng)用程序。在本例中,您可以選擇承載前文所生成的測試頁的 Web 應(yīng)用程序 (DotNetKB_WebSite)。在樹視圖中的 Web 應(yīng)用程序上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Properties...(屬性...)。然后選擇 Directory Security(目錄安全性)并單擊該對話框 Anonymous access and authentication control(匿名訪問和驗(yàn)證控制)部分中的 Edit(編輯)按鈕。最后,輸入自定義用戶名 (DotNetKB),取消選擇 Allow IIS to control password(允許 IIS 控制密碼)復(fù)選框,并輸入該自定義用戶帳戶的密碼。完成所有這些工作之后,單擊 OK(確定)按鈕,將這些更改保存到 IIS 配置數(shù)據(jù)庫中(參見圖 8)。

圖 8:Authentication Methods(驗(yàn)證方法)對話框

此時,IIS 將在一個權(quán)限有限的自定義帳戶下運(yùn)行。任何訪問者訪問您應(yīng)用程序的網(wǎng)頁時,都將以這個自定義用戶身份運(yùn)行,且只具有該自定義用戶的驗(yàn)證權(quán)限。

授權(quán) DotNetKB 用戶帳戶訪問 SQL Server

然后,您需要為該自定義用戶授予訪問數(shù)據(jù)庫 (DotNetKB) 的相應(yīng)權(quán)限。為此,您可以使用 Microsoft SQL Server 企業(yè)管理器或編寫一個自定義腳本,以創(chuàng)建一個這樣的用戶并授予其訪問特定對象的權(quán)限。本文介紹如何使用 SQL Server 企業(yè)管理器完成此操作。您還可以從后文中看到一個腳本示例。

注意:盡管 Visual Studio .NET 2003 具有與 SQL Server 兼容的許多強(qiáng)大的集成功能,但也不允許從 Visual Studio .NET 2003 中輕松管理用戶和用戶權(quán)限。在大型的組織和團(tuán)隊(duì)中,這些高級任務(wù)通常由數(shù)據(jù)庫管理員完成。

因此,啟動 SQL Server 企業(yè)管理器之后,您可以按照以下步驟將自定義用戶 (DotNetKB) 添加數(shù)據(jù)庫中(參見圖 9):

  • 在左側(cè)的樹視圖中,展開節(jié)點(diǎn)以顯示 DotNetKB 數(shù)據(jù)庫。在我的計算機(jī)上,樹視圖的結(jié)構(gòu)如下:Console Root | SQL Server Group | (LOCAL) (Windows NT) | Databases | DotNetKB
  • 然后,在數(shù)據(jù)庫下的 Users(用戶)節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,并選擇 New Database User...(新建數(shù)據(jù)庫用戶...)。顯示 Database User Properties - New User(數(shù)據(jù)庫用戶屬性 - 新建用戶)對話框時,從 Login name(登錄名)下拉框中選擇 <new>(<新建>)。
  • 顯示 SQL Server Login Properties - New Login(SQL Server 登錄屬性 - 新建登錄)對話框時,選擇 General(常規(guī))選項(xiàng)卡,并在 Name(名稱)輸入框中輸入 DotNetKB。確保選中 Windows Authentication(Windows 驗(yàn)證)單選按鈕,并從 Domain(域)下拉框中選擇自定義用戶帳戶所在的計算機(jī)的名稱。然后從 Database(數(shù)據(jù)庫)下拉框中選擇 DotNetKB。
  • 現(xiàn)在,選擇 Databases(數(shù)據(jù)庫)選項(xiàng)卡,在對話框頂部的列表中找到 DotNetKB 數(shù)據(jù)庫并選中它。然后,確保選中對話框底部列表中的 public(公共)角色。最后,單擊對話框底部的 OK(確定)按鈕,保存您的更改。

    圖 9:在數(shù)據(jù)庫中添加自定義用戶

然后,您需要為 DotNetKB 數(shù)據(jù)庫中的所有存儲過程和自定義函數(shù)添加執(zhí)行權(quán)限。為此,您只需為 public(公共)角色授予權(quán)限。您可以將權(quán)限授予 DotNetKB 用戶,這樣將使以后的登錄(當(dāng)這些用戶獲得訪問 DotNetKB 的權(quán)限時)更容易執(zhí)行存儲過程,而不需要為每個用戶添加新的權(quán)限。

下面是為 DotNetKB 數(shù)據(jù)庫中的存儲過程和函數(shù)授予執(zhí)行權(quán)限的步驟:

  • 突出顯示樹視圖中 DotNetKB 數(shù)據(jù)庫下的 Users(用戶)節(jié)點(diǎn),以顯示此數(shù)據(jù)庫的用戶列表。找到 DotNetKB 用戶并在其上雙擊,打開 Database Users Properties(數(shù)據(jù)庫用戶屬性)對話框。
  • 突出顯示(選中)public(公共)角色時,單擊 Properties...(屬性...)按鈕,打開 Database Role Properties(數(shù)據(jù)庫角色屬性)對話框。然后單擊 Permissions...(權(quán)限...)按鈕,顯示數(shù)據(jù)庫對象和權(quán)限設(shè)置列表。
  • 選中對話框頂部 Database role(數(shù)據(jù)庫角色)下拉列表中的 public(公共)角色之后,找到為此數(shù)據(jù)庫定義的所有存儲過程和自定義函數(shù)(可能需要展開對話框才能看到全名),并確保選中各項(xiàng)旁邊的 EXECUTE(執(zhí)行)復(fù)選框。您可能會發(fā)現(xiàn)某些系統(tǒng)對象的其他一些復(fù)選框也被選中了,請不要更改這些選項(xiàng)。
  • 最后,設(shè)置所有的 EXECUTE(執(zhí)行)權(quán)限后,單擊 OK(確定)按鈕,保存更改并關(guān)閉對話框。依次單擊 OK(確定)按鈕,直到所有對話框均被關(guān)閉。

至此,您已為 IIS 創(chuàng)建了自定義用戶,并設(shè)置了該用戶在 SQL Server 中的相應(yīng)權(quán)限。現(xiàn)在,您需要在 ASP.NET Web 項(xiàng)目中進(jìn)行一個配置更改,確保 ASP.NET 使用同一個用戶帳戶執(zhí)行對 SQL Server 的所有調(diào)用。

設(shè)置您的 ASP.NET 應(yīng)用程序以模擬 DotNetKB 用戶

為 IIS 下運(yùn)行的 ASP.NET Web 應(yīng)用程序生成堅(jiān)實(shí)可靠的配置的最后一個步驟是:配置 ASP.NET Web 應(yīng)用程序,使之能夠接受來自 IIS 的 Windows 用戶標(biāo)識并能用于訪問其他操作系統(tǒng)資源。為此,您只需在 web.config 根文件中輸入一行代碼。

注意:盡管目前我們還沒有真正開發(fā)出用于承載我們的頁面的 ASP.NET Web 應(yīng)用程序,但您可以使用這些信息在生成測試頁的下一節(jié)中驗(yàn)證數(shù)據(jù)訪問層的功能。

修改后的 web.config 文件如下所示:

<configuration>
  <system.web>
    ... 其他要素 ...
    <identity impersonate="true"/> <!-- 假設(shè) IIS 用戶標(biāo)識 -->
    ... 其他要素 ...
  </system.web>
</configuration>
            

請注意,您只需添加 <identity> 元素并將模擬特性設(shè)置為 true(真)。不必輸入用戶帳戶或密碼,因?yàn)檫@些信息將由 IIS 提供。也就是說,即使其他人能夠讀取您的配置文件,他們也無法確定使用哪些標(biāo)識憑據(jù)來執(zhí)行您的 Web 應(yīng)用程序。

至此,您已生成了自定義用戶,并為其設(shè)置了訪問 SQL Server 和 IIS 的相應(yīng)權(quán)限。現(xiàn)在,我們來創(chuàng)建一些測試頁,確保它能夠正常工作。從這里您可以看出一切正常。

創(chuàng)建 ASP.NET 測試頁

創(chuàng)建測試頁始終是訪問 SQL Server 數(shù)據(jù)層并驗(yàn)證輸入和輸出參數(shù)是否得到正確處理的好辦法。實(shí)際上,這是確保以后的生產(chǎn)解決方案中的 ASP.NET 頁和組件能夠按照預(yù)期方式工作的唯一辦法。這對于從解決方案中的某個層調(diào)用其他層時的驗(yàn)證信任邊界和安全性問題尤其正確。

另外,在進(jìn)行測試時,請勿拘泥于創(chuàng)建生產(chǎn)類接口。您只需測試目標(biāo)方法。實(shí)際上,故意創(chuàng)建一些您不愿以之為最終生產(chǎn)解決方案的“丑陋”測試頁是一個好的策略!本文中,我創(chuàng)建了一些非常簡單的 ASP.NET 頁,其中包含一個測試記錄列表和一個用于添加、編輯和刪除測試記錄的輸入表單。

例如,以下是用于測試主題記錄的 WebForm 布局。您會發(fā)現(xiàn),它包含錯誤消息或其他消息的狀態(tài)標(biāo)簽、記錄計數(shù)標(biāo)簽、顯示記錄列表的數(shù)據(jù)網(wǎng)格、用于輸入檢索時使用的記錄 ID 的輸入框以及支持添加、編輯和刪除記錄的小表格(參見圖 10)。

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

在創(chuàng)建測試頁時,最好使代碼簡潔明了。我通常會為每個按鈕添加一小段代碼,以調(diào)用本地方法來處理數(shù)據(jù)庫操作。以下是 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) ' 進(jìn)行數(shù)據(jù)庫調(diào)用
            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
            

請注意,本方法中實(shí)際執(zhí)行的唯一操作是由 GetItem(ID) 方法調(diào)用處理的。它執(zhí)行數(shù)據(jù)庫調(diào)用并使用返回的值設(shè)置本地變量。以下是 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
        ' 設(shè)置返回值
        mTitle = pTitle.Value.ToString()
        mDescription = pDescription.Value.ToString()
    Catch ex As Exception
        Throw New Exception(ex.Message, ex)
    End Try
End Sub
            

GetItem 方法的另一個重要方面是使用了返回值參數(shù)。它在前幾行代碼中進(jìn)行聲明,并在執(zhí)行存儲過程后進(jìn)行檢查。請注意,我檢查了已知錯誤代碼 100 和 101。有關(guān)其他錯誤的處理方法,我們將在以后介紹如何創(chuàng)建成熟的中間層時進(jìn)行介紹。問題在于,我要利用返回值并在需要時拋出一個自定義異常。

對于本解決方案示例,我最終生成了六個 Web 表單,并用它們測試了將近 30 個存儲過程和自定義函數(shù)。您可在本文開始部分列出的下載軟件包中找到所有這些完成的表單。

現(xiàn)在我們已經(jīng)定義了表、創(chuàng)建了存儲過程和函數(shù)并生成了 ASP.NET Web 表單,因此可以使用 Visual Studio .NET 2003 生成數(shù)據(jù)庫層的安裝腳本了。數(shù)據(jù)庫管理員(有時是您自己)可以將此腳本應(yīng)用到生產(chǎn)服務(wù)器上。

生成源代碼和安裝腳本

Visual Studio .NET 的另一個重要功能是它能夠?yàn)楝F(xiàn)有數(shù)據(jù)庫生成一個完整的生成腳本。實(shí)際上,您可以使用 Visual Studio .NET 為整個數(shù)據(jù)庫層生成源代碼(包括生成表和索引、授權(quán)、存儲過程等),還可以生成一個可用于在現(xiàn)有 SQL Server 上安裝這些數(shù)據(jù)庫對象的命令行腳本。

生成安裝腳本非常容易,它包括兩個步驟:首先,需要生成 T-SQL 腳本來創(chuàng)建數(shù)據(jù)庫對象(表、索引、過程等)。然后,生成一個針對目標(biāo) SQL Server 執(zhí)行 T-SQL 腳本的命令行腳本。

生成 T-SQL 腳本

生成安裝腳本之前,需要生成一個腳本集合,包括創(chuàng)建數(shù)據(jù)庫中的所有對象(表、索引、約束條件、用戶等)。

圖 11:生成腳本集合

以下是生成 T-SQL 腳本的步驟:

  • Server Explorer(服務(wù)器資源管理器)中,在選定的數(shù)據(jù)庫節(jié)點(diǎn) (DotNetKB) 上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Generate Create Script...(生成創(chuàng)建腳本...),打開 Generate Create Scripts(生成創(chuàng)建腳本)對話框。
  • General(常規(guī))選項(xiàng)卡上,選中 Script all objects(編寫全部對象腳本)復(fù)選框。
  • Formatting(格式化)選項(xiàng)卡上,選中除最后一個復(fù)選框以外的所有復(fù)選框(僅與 7.0 版腳本兼容的功能)。僅在您的目標(biāo)服務(wù)器是 SQL Server 7.0 而不是 SQL Server 2000 時,才需要最后一項(xiàng)。
  • Options(選項(xiàng))選項(xiàng)卡上,在 Security Scripting Options(安全性腳本選項(xiàng))部分,選中除 Script SQL Server logins(撰寫 SQL Server 登錄腳本)之外的所有選項(xiàng)。確保選中 Table Scripting Options(表腳本選項(xiàng))部分中的所有復(fù)選框。同時保留 File Format(文件格式)和 Files to Generate(生成的文件)的默認(rèn)單選按鈕。最后,當(dāng)所有設(shè)置均已設(shè)置正確時,單擊 OK(確定)按鈕開始腳本生成過程。
  • 系統(tǒng)將提示您指定文件位置。默認(rèn)情況下,Visual Studio .NET 將指向現(xiàn)有數(shù)據(jù)庫項(xiàng)目中的 Create Scripts(創(chuàng)建腳本)文件夾。單擊 OK(確定)按鈕接受此默認(rèn)位置。

該過程完成后,您將獲得保存數(shù)據(jù)庫中各對象的文件列表。此腳本集合還包含了用于創(chuàng)建相應(yīng)的用戶并為其授予正確權(quán)限的腳本。您甚至可以將這些信息保存到 Visual SourceSafe 中,用于處理以后的版本問題。最后,您可以根據(jù)需要將這些文件傳送給其他人,使他們可以直接更新或更改這些文件。至此,已經(jīng)完成了數(shù)據(jù)庫層的完整源代碼。

生成安裝腳本

最后一個步驟是讓 Visual Studio .NET 2003 生成一個命令行腳本,用于讀取所有 T-SQL 腳本并根據(jù)目標(biāo) SQL Server 運(yùn)行這些腳本。為此,需要完成以下步驟。

  • Solution Explorer(解決方案資源管理器)中,在項(xiàng)目名稱 (DotNetKB) 上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Create Command File...(創(chuàng)建命令文件...),打開 Create Command File(創(chuàng)建命令文件)對話框。
  • 如果需要,可以更新 Name of Command File(命令文件名稱)輸入框,然后選擇合適的驗(yàn)證方案(除非您需要遠(yuǎn)程連接服務(wù)器,否則請使用 Microsoft Windows? NT?)。最后,單擊 Add All(全部添加)按鈕,以便將所有 T-SQL 腳本都包含在安裝操作中。
  • 然后,單擊 OK(確定)按鈕生成腳本。這樣即可將完整的腳本加載到編輯器窗口(參見圖 12)中,您可以在該窗口中檢查腳本,所做的更改將在您關(guān)閉窗口時得到保存。

圖 12:生成安裝腳本

使用此腳本和 T-SQL 文件集,現(xiàn)在您可以將新數(shù)據(jù)庫層安裝到任何您具有相應(yīng)權(quán)限的目標(biāo) SQL Server 2000 上了。

小結(jié)

本部分討論了很多內(nèi)容。包括如何使用 Visual Studio .NET 2003 創(chuàng)建數(shù)據(jù)庫項(xiàng)目,如何創(chuàng)建新數(shù)據(jù)庫以及定義表、索引、約束條件和關(guān)系的數(shù)據(jù)庫圖,還介紹了使用 Visual Studio .NET 2003 添加可以存取表中存儲的數(shù)據(jù)的存儲過程和自定義函數(shù)。通過本文的學(xué)習(xí),您還學(xué)會了如何使用自定義的 Windows 帳戶以及 IIS 和 Web 應(yīng)用程序中的 web.config 文件設(shè)置,在 SQL Server 和您的 ASP.NET 解決方案之間建立一種可靠的信任關(guān)系。本文最后還介紹了用于驗(yàn)證數(shù)據(jù)層程序設(shè)計的測試 Web 表單示例,并說明了如何生成可用于在任何目標(biāo) SQL Server 上安裝完成的這個數(shù)據(jù)層的 T-SQL 腳本和命令行腳本。

也許您已經(jīng)注意到,數(shù)據(jù)庫層的相關(guān)討論中未涉及到專家記錄的存儲和再調(diào)用過程。這是因?yàn)槲覜Q定使用 XML 文件代替它。這樣,我們可以借此機(jī)會學(xué)習(xí)如何將 XML 作為數(shù)據(jù)源,以及如何將這種數(shù)據(jù)格式與 SQL Server 數(shù)據(jù)結(jié)合起來以創(chuàng)建一個完整的解決方案。在下一部分中,我們將定義 XML 存儲格式和讀寫這種數(shù)據(jù)的組件層,還將學(xué)習(xí)有關(guān) XML 序列化以及 ASP.NET 中的內(nèi)置數(shù)據(jù)高速緩存服務(wù)的相關(guān)知識。

注意:您可以通過訪問相關(guān)的 DotNetKB(英文)Web 站點(diǎn)隨時了解此項(xiàng)目的最新信息。在 MSDN? 上發(fā)布各部分之前,我會隨時在此站點(diǎn)上張貼更新內(nèi)容、讀者意見的反饋和其他信息。

Mike Amundsen 提供培訓(xùn)、演講和咨詢服務(wù)。要了解他的詳細(xì)信息或與他聯(lián)絡(luò),請?jiān)L問他的站點(diǎn) http://amundsen.com/。此外,還可以在 http://www.amundsen.com/DotNetKB 站點(diǎn)上找到本文的更新和相關(guān)資料。

出處:Microsoft
責(zé)任編輯:cjj

上一頁 使用 SQL Server 2000 創(chuàng)建數(shù)據(jù)存儲層1 [2] 下一頁

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章
[asp.net]C#教程
常見 Datagrid 錯誤
面向?qū)ο蟮膽?yīng)用服務(wù)層設(shè)計
解讀 C# 中的正則表達(dá)式
作者文章
進(jìn)入 ASP.NET 世界
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗(yàn)設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:3/31個記錄/頁 轉(zhuǎn)到 頁 共3個記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2