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

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

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

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

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

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

摘要:學(xué)習(xí)如何使用 SQL Server 2000 和 Visual Studio .NET 2003 為 DotNetKB ASP.NET 解決方案創(chuàng)建數(shù)據(jù)存儲(chǔ)層。此外,還討論了有關(guān) SQL Server、IIS 和 ASP.NET 的安全性問題。

下載 JumpPart2Sample.msi。(請注意,在示例文件中,程序員的注釋使用的是英文,本文中將其譯為中文是為了便于讀者理解。)

目錄

簡介
使用 Visual Studio .NET 2003 創(chuàng)建數(shù)據(jù)庫圖
使用 Visual Studio .NET 2003 編寫存儲(chǔ)過程
IIS、ASP.NET 和 SQL Server 的安全性問題
創(chuàng)建 ASP.NET 測試頁
生成源代碼和安裝腳本
小結(jié)

簡介

在“進(jìn)入 ASP.NET 世界”的開始部分(進(jìn)入 ASP.NET 世界 - 第 1 部分:應(yīng)用程序規(guī)劃與設(shè)計(jì))中,我們討論了名為 DotNetKB 的 ASP.NET 解決方案的基礎(chǔ)規(guī)劃和設(shè)計(jì)知識。本部分將詳細(xì)討論如何使用 Microsoft® SQL Server™ 2000 和 Microsoft Visual Studio® .NET 2003 創(chuàng)建數(shù)據(jù)存儲(chǔ)層。其中包括創(chuàng)建數(shù)據(jù)庫(添加表、索引、約束條件和關(guān)系)以及編寫用于存取數(shù)據(jù)的存儲(chǔ)過程。同時(shí),我們還將討論與 SQL Server、Internet 信息服務(wù)器 (IIS) 和 ASP.NET 有關(guān)的安全性問題。到本部分結(jié)束時(shí),我們將獲得一個(gè)適用于 DotNetKB 解決方案的功能完備且安全的數(shù)據(jù)存儲(chǔ)系統(tǒng)。

使用 Visual Studio .NET 2003 創(chuàng)建數(shù)據(jù)庫圖

Visual Studio .NET 2003 的眾多優(yōu)勢之一是,用戶可將其用作主要的 SQL Server 編輯器來完成大多數(shù)任務(wù)。獲得目標(biāo)數(shù)據(jù)庫服務(wù)器的適當(dāng)權(quán)限后,您就可以輕松地使用 Visual Studio .NET 2003 創(chuàng)建各種數(shù)據(jù)庫、表、索引、約束條件、關(guān)系、視圖、存儲(chǔ)過程和功能了。Visual Studio .NET 提供了一個(gè)可供您完成上述操作的默認(rèn)數(shù)據(jù)庫項(xiàng)目,還包括了用于創(chuàng)建表、觸發(fā)器、存儲(chǔ)過程等的大量模板,非常便于使用。最后,因?yàn)槭褂?Visual Studio .NET 作為 SQL Server 的編輯環(huán)境,所以還可以使用它將所有 SQL Server 腳本存儲(chǔ)到 Microsoft Visual SourceSafe® 中。這對于共享項(xiàng)目和其他需要長期維護(hù)的情況而言非常方便。

引用用戶方案

針對本系列文章中的項(xiàng)目 DotNetKB,我創(chuàng)建了 30 多個(gè)用戶方案,用于標(biāo)識支持本系列文章第 1 部分所概括的應(yīng)用程序所需的任務(wù)。我們將使用這些用戶方案來標(biāo)識表中存儲(chǔ)的數(shù)據(jù)以及為管理這些數(shù)據(jù)而在運(yùn)行時(shí)執(zhí)行的存儲(chǔ)過程。下面是部分用戶方案列表。完整的列表可以從相關(guān)支持站點(diǎn) User Scenarios for DotNetKB Project(英文)上找到。

  1. 查看按關(guān)鍵字搜索的問題列表(按日期倒序排列)
  2. 查看按日期排序的問題列表(按日期倒序排列)
  3. 查看按主題排序的問題列表(按主題的字母順序/問題的日期倒序排列)
  4. 查看某個(gè)特定主題的問題列表(按日期倒序排列)
  5. 查看無任何解答的問題列表(按日期倒序排列)
  6. 查看問題計(jì)數(shù)
  7. 查看無解答的問題計(jì)數(shù)
  8. 查看某個(gè)特定主題的問題計(jì)數(shù)
  9. 查看由某位專家解答的問題計(jì)數(shù)
  10. 查看某個(gè)問題及其解答列表(按解答日期倒序排列)
  11. 添加新問題
  12. 編輯現(xiàn)有問題
  13. 刪除現(xiàn)有問題及其相關(guān)解答

    如您所見,列表中僅僅涉及到問題記錄的任務(wù)就有許多。而且您還需要處理解答、主題和專家記錄。而在實(shí)際工作中,這才剛剛開始。首先,您必須標(biāo)識需要為每條記錄存儲(chǔ)的數(shù)據(jù)元素(問題、解答、主題和專家),還需要將結(jié)果以表格的形式組織到 SQL Server 中的數(shù)據(jù)庫中。

創(chuàng)建數(shù)據(jù)庫項(xiàng)目

首先要打開 Visual Studio .NET 2003 并創(chuàng)建一個(gè)新的數(shù)據(jù)庫項(xiàng)目。Visual Studio .NET 數(shù)據(jù)庫項(xiàng)目的類型目前還不太確定,因?yàn)殚_始新項(xiàng)目時(shí)它隱藏在選項(xiàng)列表中。但開始使用后,我想您會(huì)發(fā)現(xiàn)數(shù)據(jù)庫項(xiàng)目類型有許多優(yōu)點(diǎn),所以非常值得花費(fèi)精力去掌握它們。

要使用 Visual Studio .NET 創(chuàng)建一個(gè)新的數(shù)據(jù)庫項(xiàng)目,需要完成以下任務(wù):

  • 啟動(dòng) Visual Studio .NET,如果新建項(xiàng)目對話框沒有自動(dòng)出現(xiàn),請從主菜單中選擇 File(文件)-> New(新建)-> Project(項(xiàng)目)。
  • 當(dāng)顯示 New Project(新建項(xiàng)目)對話框時(shí),展開左側(cè)樹視圖列表中的 Other Projects(其他項(xiàng)目)文件夾,然后單擊 Database Projects(數(shù)據(jù)庫項(xiàng)目)文件夾。此時(shí)右側(cè)將顯示 Database Project(數(shù)據(jù)庫項(xiàng)目)模板。
  • 現(xiàn)在,在 Name:(名稱:)輸入框中鍵入項(xiàng)目名稱。在我的例子中,鍵入的是 DotNetKB_Database,不過您可以根據(jù)需要鍵入任何內(nèi)容。
  • 然后單擊 OK(確定)按鈕,創(chuàng)建項(xiàng)目并在 Visual Studio .NET 中打開它。
  • 屏幕上將出現(xiàn)一個(gè)對話框,要求您選擇要與該項(xiàng)目相關(guān)聯(lián)的數(shù)據(jù)庫。此時(shí),先單擊 Cancel(取消)。下一步將創(chuàng)建一個(gè)新數(shù)據(jù)庫并將其添加到您的項(xiàng)目中。

圖 1 所示為您創(chuàng)建項(xiàng)目時(shí),該項(xiàng)目在 Visual Studio .NET 中的外觀。

圖 1:創(chuàng)建一個(gè)新的數(shù)據(jù)庫項(xiàng)目

創(chuàng)建要使用的新數(shù)據(jù)庫之后,可以在該數(shù)據(jù)庫與您的項(xiàng)目之間建立一個(gè)連接,以便在 Visual Studio .NET 2003 中對其進(jìn)行操作。為此,需要完成以下任務(wù):

  • Solution Explorer(解決方案資源管理器)窗口中,展開您的 dotNETKB_Database 項(xiàng)目,以顯示 Database References(數(shù)據(jù)庫引用)項(xiàng)。
  • Database References(數(shù)據(jù)庫引用)項(xiàng)上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 New Database Reference...(新建數(shù)據(jù)庫引用...),打開 Data Link Properties(數(shù)據(jù)鏈接屬性)對話框。
  • 輸入您在其中添加 DotNetKB 數(shù)據(jù)庫的數(shù)據(jù)庫服務(wù)器的名稱,然后輸入您的登錄憑據(jù)并從下拉菜單中選擇 DotNetKB。
  • 單擊 OK(確定)按鈕,將引用添加到您的項(xiàng)目中。

圖 2 所示為完成上述操作時(shí)對話框的外觀。

圖 2:Data Link Properties(數(shù)據(jù)鏈接屬性)對話框

至此,數(shù)據(jù)庫創(chuàng)建完畢并被添加為您項(xiàng)目的引用。下一步,定義存儲(chǔ) DotNetKB 解決方案數(shù)據(jù)所需的表。

使用 Visual Studio .NET 定義數(shù)據(jù)庫表

在 Visual Studio .NET 中定義數(shù)據(jù)庫表的最簡單的方法是創(chuàng)建一個(gè)數(shù)據(jù)庫圖。這樣,您可以在一個(gè)類似“所見即所得”的編輯器中定義所有細(xì)節(jié)。您只需展開 Server Explorer(服務(wù)器資源管理器)中相應(yīng)的樹,在 Database Diagrams(數(shù)據(jù)庫圖)項(xiàng)上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 New Database Diagram...(新建數(shù)據(jù)庫圖...),即可啟動(dòng)一個(gè)新的空白圖。第一次啟動(dòng)某個(gè)圖時(shí),系統(tǒng)將要求您從數(shù)據(jù)庫中選擇一個(gè)表。因?yàn)槟形磩?chuàng)建任何表,所以可以忽略該對話框,F(xiàn)在,可以開始定義您的表了。

本系列文章第 1 部分中生成的用戶方案文檔包含定義表所需的信息。學(xué)習(xí)定義如何在系統(tǒng)中添加新記錄的方案,通常是了解需要存儲(chǔ)哪些數(shù)據(jù)的最佳途徑。有時(shí),您需要查看諸如記錄更新甚至是報(bào)告之類的其他方案,以確保沒有遺漏其他字段。在本示例中,“添加記錄”方案就是一個(gè)很好的參考方案。

例如,以下是用于添加問題的方案:

添加新問題

向系統(tǒng)中添加一條新問題記錄,其中包括標(biāo)題日期/時(shí)間、指明該問題所屬類別的主題 ID 以及問題正文。有時(shí)還需要提供問題提出者姓名及其電子郵件地址。添加新問題之后,將向調(diào)用函數(shù)返回一個(gè)唯一的整數(shù)問題 ID

重要名詞以粗體表示。閱讀方案說明時(shí),這些名詞或表名(例如,“問題記錄”就是一個(gè)很好的例子)往往能夠表明需要存儲(chǔ)哪些數(shù)據(jù)。使用上述信息,您可以在數(shù)據(jù)庫圖中添加一個(gè)新表并定義所需的列。下面的示例詳細(xì)介紹了如何在數(shù)據(jù)庫圖中添加表。

  • 在圖“surface”上單擊鼠標(biāo)右鍵并從上下文相關(guān)菜單中選擇 New Table...(新建表...)。輸入 Questions(問題)作為表名,然后單擊 OK(確定)將其添加到圖中。
  • Questions(問題)表對話框中,鍵入上文所述方案中提供的字段信息。例如,Column Name(列名)= IDData Type(數(shù)據(jù)類型)= int、Length(長度)= 4,并取消選擇 Allow Nulls(允許為空)復(fù)選框。對該表的其余部分重復(fù)上述操作(參見圖 3)。

    圖 3:Questions(問題)表

您將看到,第一列 (ID) 旁邊有一個(gè)小的金色鍵。它表示該字段是該表的主鍵字段。要設(shè)置主鍵字段,可以在列表中的列名上單擊鼠標(biāo)右鍵,然后從上下文相關(guān)菜單中選擇 Primary Key(主鍵)。另外,還應(yīng)將此 ID 字段設(shè)置為以增量方式自動(dòng)增加的標(biāo)識列。這樣,SQL Server 就可以為添加到表中的每條記錄自動(dòng)生成一個(gè)唯一的整數(shù)值。要進(jìn)行此設(shè)置,請?jiān)谠摿猩蠁螕羰髽?biāo)右鍵,從上下文相關(guān)菜單中選擇 Properties(屬性),然后在 Property Pages(屬性頁)對話框中選擇 Columns(列)選項(xiàng)卡。其他的操作就很容易了(參見圖 4)。

圖 4:Property Pages(屬性頁)對話框中的 Columns(列)選項(xiàng)卡

使用“添加主題記錄”和“添加解答記錄”方案中的信息,可以創(chuàng)建其他兩個(gè)表。請務(wù)必為每個(gè)表創(chuàng)建 ID 列,并將這些列標(biāo)記為標(biāo)識列和主鍵。下面的圖 5 顯示了三個(gè)已完成的表。

圖 5:三個(gè)已完成的表

您會(huì)發(fā)現(xiàn),這些表都通過連接線與數(shù)據(jù)庫圖連接起來。這些連接線表明表之間存在外鍵關(guān)系。例如,Questions(問題)表中的 TopicID 列與 Topics(主題)表中的 ID 列相關(guān)聯(lián)。通過將這種關(guān)系存儲(chǔ)到數(shù)據(jù)庫中,您可以制定用以防止在數(shù)據(jù)庫中保存非法數(shù)據(jù)的規(guī)則。本示例中的關(guān)系規(guī)則是,Questions.TopicID 列所允許的有效值只能是 Topics.ID 列中已存在的某條記錄的值。

您可以通過將 Questions(問題)表中的 TopicID 列拖放到 Topics(主題)表中的 ID 列上,來定義這些關(guān)系。此時(shí)將出現(xiàn)一個(gè)對話框,顯示規(guī)則定義的詳細(xì)信息并要求您按下 OK(確定)按鈕進(jìn)行確認(rèn)(參見圖 6)。

圖 6:Create Relationship(創(chuàng)建關(guān)系)對話框

您可能會(huì)發(fā)現(xiàn),Responses.QuestionIDQuestions.ID 之間也定義了一個(gè)關(guān)系。

注意:您可能已經(jīng)注意到,我們還沒有為專家定義任何表。我決定將有關(guān)專家的信息存儲(chǔ)在一個(gè) XML 文件中,而不是存儲(chǔ)在數(shù)據(jù)庫中。這樣做的主要原因是我們可以借此討論一下如何讀寫 XML 數(shù)據(jù),以便在同一個(gè)應(yīng)用中融合 XML 數(shù)據(jù)和關(guān)系數(shù)據(jù)。我們將在下一部分中討論有關(guān)專家數(shù)據(jù)的問題。

至此,數(shù)據(jù)庫和表都已定義完畢。以上介紹了解決方案的實(shí)際數(shù)據(jù)存儲(chǔ)過程。但是,我們還需要了解如何在表中讀寫信息。為此,我們將定義 SQL Server 中的存儲(chǔ)過程。

使用 Visual Studio .NET 2003 編寫存儲(chǔ)過程

數(shù)據(jù)表定義了如何在數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù),但沒有說明如何存取數(shù)據(jù)。我們還需要了解讀寫記錄以便從表中再次調(diào)用選定行和列的詳細(xì)信息。開發(fā)人員通常會(huì)在其代碼中編寫一些特殊的查詢語句,用于讀寫數(shù)據(jù)。這不僅會(huì)導(dǎo)致效率低下,還會(huì)帶來安全性問題。在本應(yīng)用中,所有數(shù)據(jù)存取工作都將通過 SQL Server 存儲(chǔ)過程(stored procedures,有時(shí)稱作“stored procs”或“sprocs”)來處理。使用存儲(chǔ)過程可以提高解決方案的性能并使之更安全。此外,使用存儲(chǔ)過程可以增加數(shù)據(jù)層的抽象級別,從而保護(hù)解決方案的其他部分不受小的數(shù)據(jù)布局和格式變化帶來的影響。這樣可使您的解決方案更可靠,更易于維護(hù)。

為什么不使用特殊的查詢語句

我們經(jīng)常會(huì)看到如下所示的文章和代碼示例:

    Private Function GetSomeData(ByVal ID As Integer) As SqlDataReader
        Dim strSQL As String
        strSQL = "SELECT * FROM MyTable WHERE ID=" & ID.ToString()
        cd = New SqlCommand
        With cd
            .CommandText = strSQL
            .CommandType = CommandType.Text
            .Connection = cn
            .Connection.Open()
            Return .ExecuteReader(CommandBehavior.CloseConnection)
        End With
    End Function
            

上述代碼不符合要求的原因有以下幾個(gè)。首先,如果將 SQL 查詢語句嵌套在代碼中,那么只要數(shù)據(jù)層發(fā)生任何變化,都必須編輯并重新編譯代碼層。這樣就會(huì)帶來諸多不便。還可能會(huì)導(dǎo)致其他錯(cuò)誤,而且通常會(huì)造成數(shù)據(jù)服務(wù)和代碼之間的混亂。

其次,如果使用不經(jīng)過輸入驗(yàn)證的字符串連接 ("...WHERE ID=" & ID.ToString()),將可能使您的應(yīng)用程序暴露在黑客的攻擊之下。更重要的是,這樣就會(huì)為惡意用戶提供了在您的代碼中添加其他 SQL 關(guān)鍵字的機(jī)會(huì)。例如,根據(jù)您的輸入模式,惡意用戶不僅可以輸入 13 或 21 作為有效的表 ID,還可以輸入 13; DELETE FROM USERS 或其他可能會(huì)帶來危害的語句。完善的輸入驗(yàn)證可以保護(hù)您的系統(tǒng)免受大多數(shù) SQL 插入代碼的攻擊,所以最好將所有內(nèi)置的 SQL 語句完全刪除,使攻擊者很難濫用您的應(yīng)用程序數(shù)據(jù)。

最后,內(nèi)置 SQL 語句的執(zhí)行速度要比存儲(chǔ)過程慢得多。創(chuàng)建存儲(chǔ)過程并將其存儲(chǔ)到數(shù)據(jù)庫中時(shí),SQL Server 會(huì)對其文本進(jìn)行評估并以優(yōu)化的形式進(jìn)行存儲(chǔ),從而使之更容易在運(yùn)行時(shí)為 SQL Server 所用。如果使用內(nèi)置的特殊查詢語句,就必須在每次運(yùn)行該代碼之前進(jìn)行這種評估。對于那些供大量用戶使用的應(yīng)用程序而言,每分鐘就可能需要對同一查詢語句進(jìn)行數(shù)百次評估。

相反,存儲(chǔ)過程可以保持代碼的簡潔明了,可以提供額外的安全保護(hù),并能提高解決方案的性能。這些都是摒棄內(nèi)置查詢語句而使用存儲(chǔ)過程的原因。

將存儲(chǔ)過程添加到 Visual Studio .NET 數(shù)據(jù)庫項(xiàng)目中

使用 Visual Studio .NET 2003 創(chuàng)建存儲(chǔ)過程非常簡單。首先,您需要打開一個(gè)數(shù)據(jù)庫項(xiàng)目。這一操作已在本文第一部分中完成。然后,您可以使用代碼模板創(chuàng)建存儲(chǔ)過程,也可以針對 Server Explorer(服務(wù)器資源管理器)窗口中連接的數(shù)據(jù)庫,使用 Visual Studio .NET 2003 直接編輯新的存儲(chǔ)過程。本文重點(diǎn)介紹如何針對連接的數(shù)據(jù)庫服務(wù)器直接編輯存儲(chǔ)過程。稍后會(huì)介紹如何為以后的遠(yuǎn)程服務(wù)器安裝生成所有結(jié)果腳本。

介紹使用 Visual Studio .NET 2003 編寫存儲(chǔ)過程的機(jī)制之前,還要重點(diǎn)強(qiáng)調(diào)一下與創(chuàng)建可靠的存儲(chǔ)過程相關(guān)的幾個(gè)一般問題。首先,最好將創(chuàng)建和執(zhí)行存儲(chǔ)過程的整個(gè)過程看作是多層應(yīng)用程序模型的一個(gè)成熟成員。存儲(chǔ)過程提供了一種對您的數(shù)據(jù)存取進(jìn)行編程的方法。這樣,您可以更好地控制整個(gè)解決方案并提高其效率。也就是說,應(yīng)將存儲(chǔ)過程集合看作是應(yīng)用程序中一個(gè)獨(dú)立的層。優(yōu)秀的數(shù)據(jù)存取策略應(yīng)允許存儲(chǔ)過程作為獨(dú)立的組件而存在。也就是說,存儲(chǔ)過程層中需要具備安全性、錯(cuò)誤處理以及其他構(gòu)成優(yōu)秀組件層的詳細(xì)內(nèi)容。更重要的是,應(yīng)像在其他高級編程環(huán)境中那樣訪問 T-SQL 語言,而不是僅僅將其作為一種生成數(shù)據(jù)庫查詢的方式。

注意:現(xiàn)在,我懷疑有些讀者可能在想他們并不打算對 SQL Server 進(jìn)行編程,或者認(rèn)為這項(xiàng)工作最好留給那些 DBA 們來完成。雖然具備數(shù)據(jù)庫管理員經(jīng)驗(yàn)會(huì)有所幫助,但并一定非要成為火箭科學(xué)家(這里指技藝高超的編程專家)才能很好地完成 SQL Server 編程工作。像其他語言一樣,這種語言也需要花費(fèi)一定的時(shí)間并通過一定的實(shí)踐才能熟練掌握,在這一點(diǎn)上它與其他語言并沒有太大的不同。如果您能夠在 Microsoft Visual Basic® .NET 中編程,也就能夠在 T-SQL 中編程。

使用 Visual Studio .NET 添加存儲(chǔ)過程

下面詳細(xì)介紹如何在 Visual Studio .NET 2003 中將存儲(chǔ)過程添加到現(xiàn)有 SQL Server 數(shù)據(jù)庫中。您需要使用服務(wù)器資源管理器打開一個(gè)新的存儲(chǔ)過程模板,進(jìn)行編輯,然后再將其保存到數(shù)據(jù)庫中。下面是分步實(shí)現(xiàn)這一過程的示例:

  • 打開 Visual Studio .NET,然后打開一個(gè)現(xiàn)有的數(shù)據(jù)庫項(xiàng)目(如本文前面所啟動(dòng)的項(xiàng)目)或啟動(dòng)一個(gè)新項(xiàng)目。
  • Server Explorer(服務(wù)器資源管理器)中,展開 Data Connections(數(shù)據(jù)連接)樹,找到您要使用的數(shù)據(jù)庫 (DotNetKB),然后在 Stored Procedures(存儲(chǔ)過程)節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,打開上下文相關(guān)菜單。
  • 從上下文相關(guān)菜單中選擇 New Stored Procedure(新建存儲(chǔ)過程),在 Visual Studio .NET 編輯器空間中打開一個(gè)存儲(chǔ)過程模板,F(xiàn)在,可以鍵入內(nèi)容了。
  • 完成編輯后,只需關(guān)閉編輯器中正在編輯的頁面,Visual Studio .NET 將使用存儲(chǔ)過程的名稱將該項(xiàng)內(nèi)容保存到數(shù)據(jù)庫中。如果鍵入的內(nèi)容有誤,編輯器會(huì)向您報(bào)告這些錯(cuò)誤,您可以在保存存儲(chǔ)過程之前修正這些錯(cuò)誤(參見圖 11)。

下面是存儲(chǔ)過程的一個(gè)簡單示例,它返回一個(gè)主題列表。

CREATE PROCEDURE TopicsGetList
AS
   SET NOCOUNT ON -- 不返回受影響行的值
   SELECT 
      ID,
      Title,
      Description
   FROM 
      Topics
   ORDER BY 
      Title
   RETURN @@ERROR
            

在本示例中,有幾點(diǎn)需要指出。首先,請注意 SET NOCOUNT ON 行。它告訴 SQL Server 停止為該查詢計(jì)算受影響的行數(shù),并停止向調(diào)用函數(shù)返回該值。這是一項(xiàng)不必要的額外工作。其次,結(jié)尾處的 RETURN @@ERROR 一行很重要。此行代碼返回 SQL Server 中發(fā)生的錯(cuò)誤的整數(shù)值。您可以在調(diào)用例程中使用此代碼完成其他診斷和錯(cuò)誤處理操作。您現(xiàn)在并不需要執(zhí)行任何操作,但它們是創(chuàng)建存儲(chǔ)過程時(shí)應(yīng)該遵循的兩個(gè)好習(xí)慣。

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

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

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

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

藍(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è)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會(huì)員,你可以注冊 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(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)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2