久久人人97超碰超碰窝窝_国产精品久久久久久搜索_AV在线网站无码不卡的_亚洲AV永久精品爱情岛论坛

rexian

咨詢電話:023-6276-4481

熱門文章

聯(lián)系方式

電 話:023-6276-4481

郵箱:broiling@qq.com

地址:重慶市南岸區(qū)亞太商谷6幢25-2

當(dāng)前位置:網(wǎng)站首頁 > 技術(shù)文章 > Microsoft Application Blocks for .NET

Microsoft Application Blocks for .NET

編輯:Ethan 發(fā)表時(shí)間:2017-11-07 12:57:59
Ethan

簡介

您是否正在從事 .NET 應(yīng)用程序數(shù)據(jù)訪問代碼的設(shè)計(jì)和開發(fā)?您是否覺得自己總是在反復(fù)編寫相同的數(shù)據(jù)訪問代碼?您是否曾經(jīng)將數(shù)據(jù)訪問代碼包裝在 Helper 函數(shù)中,以便能夠在一行中調(diào)用存儲過程?如果是,那么 Microsoft? Data Access Application Block for .NET 正是為您設(shè)計(jì)的。

Data Access Application Block 將訪問 Microsoft SQL Server? 數(shù)據(jù)庫的性能和資源管理方面的最佳經(jīng)驗(yàn)封裝在一起。您可以很方便地在自己的 .NET 應(yīng)用程序中將其作為構(gòu)造塊使用,從頁減少了需要?jiǎng)?chuàng)建、測試和維護(hù)的自定義代碼的數(shù)量。

尤其是,Data Access Application Block 可以幫助您:

  • 調(diào)用存儲過程或 SQL 文本命令。

  • 指定參數(shù)詳細(xì)信息。

  • 返回 SqlDataReader、DataSet 或 XmlReader 對象。

例如,在引用了 Data Access Application Block 的應(yīng)用程序中,您可以簡單地在一行代碼中調(diào)用存儲過程并生成 DataSet,如下所示:

[Visual Basic]
Dim ds As DataSet = SqlHelper.ExecuteDataset( _
      connectionString, _
      CommandType.StoredProcedure, _
      "getProductsByCategory", _
      new SqlParameter("@CategoryID", categoryID))
 
[C#]
DataSet ds = SqlHelper.ExecuteDataset( 
      connectionString,
      CommandType.StoredProcedure,
      "getProductsByCategory",
      new SqlParameter("@CategoryID", categoryID));
注意: Application Block for .NET(用于 .NET 的應(yīng)用程序塊)是基于對成功的 .NET 應(yīng)用程序進(jìn)行詳細(xì)研究而設(shè)計(jì)的。它以源代碼的形式提供,您可以原樣使用,也可以針對自己的應(yīng)用程序進(jìn)行自定義。該應(yīng)用程序塊并不代表未來 Microsoft ADO.NET 程序庫的發(fā)展方向。Microsoft ADO.NET 程序庫是為在各種使用情況下實(shí)現(xiàn)對數(shù)據(jù)訪問行為的精確控制而建立的。將來的 ADO.NET 版本可能會使用不同的模型來實(shí)現(xiàn)這個(gè)方案。

本概述的其余部分包括以下內(nèi)容:

Data Access Application Block 包括哪些內(nèi)容?

下載和安裝 Data Access Application Block

使用 Data Access Application Block

內(nèi)部設(shè)計(jì)

常見問題

反饋和支持

合作者

Data Access Application Block 包括哪些內(nèi)容?

提供了 Data Access Application Block 的源代碼以及快速入門示例應(yīng)用程序,您可以使用這些應(yīng)用程序測試其功能。Data Access Application Block 還包括綜合文檔,可以幫助您使用和了解所提供的代碼。

Visual Studio .NET 項(xiàng)目

提供了 Data Access Application Block 的 Microsoft Visual Basic? .NET 和 Microsoft Visual C#? 源代碼,以及每種語言的快速入門示例客戶端應(yīng)用程序,您可以使用這些應(yīng)用程序測試常見的方案。這有助于加深您對 Data Access Application Block 的工作原理的了解。您還可以自定義源代碼以滿足自己的需要。

您可以編譯 Visual Basic 和 C# Microsoft.ApplicationBlocks.Data 項(xiàng)目,以生成一個(gè)名為 Microsoft.ApplicationBlocks.Data.dll 的程序集。該程序集包括一個(gè) SqlHelper 類(其中包含用于執(zhí)行數(shù)據(jù)庫命令的核心功能)和一個(gè) SqlhelperParameterCache 類(提供參數(shù)發(fā)現(xiàn)和緩存功能)。

文檔

Data Access Application Block 的文檔主要包括以下內(nèi)容:

  • 使用 Data Access Application Block 開發(fā)應(yīng)用程序。本部分包括快速入門示例,其中包含多種常見的使用情況,可以幫助您快速輕松地掌握 Data Access Application Block(數(shù)據(jù)訪問應(yīng)用程序塊)的使用。

  • Data Access Application Block 的設(shè)計(jì)與實(shí)現(xiàn)。本部分包括背景設(shè)計(jì)原理信息,以便用戶深入了解 Data Access Application Block 的設(shè)計(jì)與實(shí)現(xiàn)。

  • 部署和運(yùn)行。本部分包括安裝信息,其中包含部署和更新選項(xiàng)以及與安全性有關(guān)的信息。

  • 參考。本部分包含綜合的 API 參考,其中詳細(xì)介紹了構(gòu)成 Data Access Application Block 的類和接口。

系統(tǒng)要求

要運(yùn)行 Data Access Application Block,需要滿足以下要求:

  • Microsoft Windows? 2000、Windows XP Professional

  • .NET Framework SDK(英文)的 RTM 版本

  • Visual Studio? .NET 的 RTM 版本(推薦,但不必需)

  • SQL Server 7.0 或更高版本的數(shù)據(jù)庫服務(wù)器

下載并安裝 Data Access Application Block

您可以獲取一個(gè)包含已簽名的 Data Access Application Block 程序集和綜合文檔的 Windows 安裝程序文件。

安裝進(jìn)程將在您的“程序”菜單中創(chuàng)建一個(gè) Microsoft Application Blocks for .NET(用于 .NET 的 Microsoft 應(yīng)用程序塊)子菜單。該子菜單中有一個(gè) Data Access(數(shù)據(jù)訪問)子菜單,其中包括用于啟動(dòng)文檔的選項(xiàng)和用于啟動(dòng) Data Access Application Block Visual Studio .NET 解決方案的選項(xiàng)。

請轉(zhuǎn)到 MSDN Downloads(英文)進(jìn)行下載。

使用 Data Access Application Block

本節(jié)討論如何使用 Data Access Application Block 來執(zhí)行數(shù)據(jù)庫命令和管理參數(shù)。圖 1 顯示了 Data Access Application Block 的主要元素。

圖 1:Data Access Application Block

SqlHelper 類提供了一組靜態(tài)方法,可以用來向 SQL Server 數(shù)據(jù)庫發(fā)出許多各種不同類型的命令。

SqlHelperParameterCache 類提供命令參數(shù)緩存功能,可以用來提高性能。該類由許多 Execute 方法(尤其是那些只運(yùn)行存儲過程的重寫方法)在內(nèi)部使用。數(shù)據(jù)訪問客戶端也可以直接使用它來緩存特定命令的特定參數(shù)集。

使用 SqlHelper 類執(zhí)行命令

SqlHelper 類提供了五種 Shared (Visual Basic) 或 static (C#) 方法,它們是:ExecuteNonQuery、ExecuteDataset、ExecuteReader、ExecuteScalar 和 ExecuteXmlReader。實(shí)現(xiàn)的每種方法都提供一組一致的重載。這提供了一種很好的使用 SqlHelper 類來執(zhí)行命令的模式,同時(shí)為開發(fā)人員選擇訪問數(shù)據(jù)的方式提供了必要的靈活性。每種方法的重載都支持不同的方法參數(shù),因此開發(fā)人員可以確定傳遞連接、事務(wù)和參數(shù)信息的方式。類中實(shí)現(xiàn)的所有方法都支持以下重載:

[Visual Basic]
Execute* (ByVal connection As SqlConnection, _
          ByVal commandType As CommandType, _
          ByVal CommandText As String)

Execute* (ByVal connection As SqlConnection, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal connection As SqlConnection, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal commandType As CommandType, _
          ByVal commandText As String)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal transaction As SqlTransaction, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

[C#]
Execute* (SqlConnection connection, CommandType commandType, 
          string commandText)

Execute* (SqlConnection connection, CommandType commandType,
          string commandText, params SqlParameter[] commandParameters)

Execute* (SqlConnection connection, string spName, 
          params object[] parameterValues)

Execute* (SqlConnection connection, 
          CommandType commandType, string commandText)

Execute* (SqlConnection connection,
          CommandType commandType, string commandText, 
          params SqlParameter[] commandParameters)

Execute* (SqlConnection connection,
          string spName, params object[] parameterValues)

除這些重載以外,除 ExecuteXmlReader 之外的其他方法還提供了另一種重載:允許將連接信息作為連接字符串而不是連接對象來傳遞,如下面的方法簽名所示:

[Visual Basic]
Execute* (ByVal connectionString As String, _
          ByVal commandType As CommandType, _
          ByVal commandText As String)

Execute* (ByVal connectionString As String, _
          ByVal commandType As CommandType, _
          ByVal commandText As String, _
          ByVal ParamArray commandParameters() As SqlParameter)

Execute* (ByVal connectionString As String, _
          ByVal spName As String, _
          ByVal ParamArray parameterValues() As Object)

[C#]
Execute* (string connectionString, CommandType commandType, 
          string commandText)

Execute* (string connectionString, CommandType commandType, 
          string commandText, 
          params SqlParameter[] commandParameters)

Execute* (string connectionString, string spName, 
          params object[] parameterValues)
注意: ExecuteXmlReader 不支持連接字符串,因?yàn)椋号c SqlDataReader 對象不同,XmlReader 對象在 XmlReader 關(guān)閉時(shí)沒有提供自動(dòng)關(guān)閉連接的方法。如果客戶端傳遞了連接字符串,那么當(dāng)客戶端完成對 XmlReader 的操作后,將無法關(guān)閉與 XmlReader 相關(guān)聯(lián)的連接對象。

通過參考 Data Access Application Block 程序集并導(dǎo)入 Microsoft.ApplicationBlocks.Data 命名空間,您可以輕松編寫使用任何一種 SqlHelper 類方法的代碼,如下面的代碼示例所示:

[Visual Basic]
Imports Microsoft.ApplicationBlocks.Data

[C#]
using Microsoft.ApplicationBlocks.Data;

導(dǎo)入命名空間后,您可以調(diào)用任何 Execute* 方法,如下面的代碼示例所示:

[Visual Basic]
Dim ds As DataSet = SqlHelper.ExecuteDataset( _
   "SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;",
     _
   CommandType.Text, "SELECT * FROM Products")

[C#]
DataSet ds = SqlHelper.ExecuteDataset( 
   "SERVER=DataServer;DATABASE=Northwind;INTEGRATED
     SECURITY=sspi;", _
   CommandType.Text, "SELECT * FROM Products");

使用 SqlHelperParameterCache 類管理參數(shù)

SqlHelperParameterCache 類提供了三種可以用來管理參數(shù)的公共共享方法。它們是:

  • CacheParameterSet。用于將 SqlParameters 數(shù)組存儲到緩存中。

  • GetCachedParameterSet。用于檢索緩存的參數(shù)數(shù)組的副本。

  • GetSpParameterSet。一種重載方法,用于檢索指定存儲過程的相應(yīng)參數(shù)(首先查詢一次數(shù)據(jù)庫,然后緩存結(jié)果以便將來查詢)。

緩存和檢索參數(shù)

通過使用 CacheParameterSet 方法,可以緩存 SqlParameter 對象數(shù)組。此方法通過將連接字符串和命令文本連接起來創(chuàng)建一個(gè)鍵,然后將參數(shù)數(shù)組存儲在 Hashtable 中。

要從緩存中檢索參數(shù),請使用 GetCachedParameterSet 方法。此方法將返回一個(gè) SqlParameter 對象數(shù)組,這些對象已使用緩存(與傳遞給該方法的連接字符串和命令文本相對應(yīng))中的參數(shù)的名稱、值、方向和數(shù)據(jù)類型等進(jìn)行了初始化。

注意: 用作參數(shù)集的鍵的連接字符串通過簡單的字符串比較進(jìn)行匹配。用于從 GetCachedParameterSet 中檢索參數(shù)的連接字符串必須與用來通過 CacheParameterSet 來存儲這些參數(shù)的連接字符串完全相同。語法不同的連接字符串即使語義相同,也不會被認(rèn)為是匹配的。

以下代碼顯示了如何使用 SqlHelperParameterCache 類來緩存和檢索 Transact-SQL 語句的參數(shù)。

[Visual Basic]
' 初始化連接字符串和命令文本
' 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
Const CONN_STRING As String = _
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
Dim sql As String = _
       "SELECT ProductName FROM Products " + _
       "WHERE Category=@Cat AND SupplierID = @Sup"

' 緩存參數(shù)
Dim paramsToStore(1) As SqlParameter
paramsToStore(0) = New SqlParameter("@Cat", SqlDbType.Int)
paramsToStore(1) = New SqlParameter("@Sup", SqlDbType.Int)
SqlHelperParameterCache.CacheParameterSet(CONN_STRING, _
                                          sql, _
                                          paramsToStore)

' 從緩存中檢索參數(shù)
Dim storedParams(1) As SqlParameter
storedParams = SqlHelperParameterCache.GetCachedParameterSet( _
                                                 CONN_STRING, sql)
storedParams(0).Value = 2
storedParams(1).Value = 3

' 在命令中使用參數(shù)
Dim ds As DataSet
ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                              CommandType.Text, _
                              sql, storedParams)

[C#]
// 初始化連接字符串和命令文本
// 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
const string CONN_STRING =
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
string spName = "SELECT ProductName FROM Products " + 
                "WHERE Category=@Cat AND SupplierID = @Sup";

// 緩存參數(shù)
SqlParameter[] paramsToStore = new SqlParameter[2];
paramsToStore[0] = New SqlParameter("@Cat", SqlDbType.Int);
paramsToStore[1] = New SqlParameter("@Sup", SqlDbType.Int);
SqlHelperParameterCache.CacheParameterSet(CONN_STRING, 
                                          sql, 
                                          paramsToStore);

// 從緩存中檢索參數(shù)
SqlParameter storedParams = new SqlParameter[2];
storedParams = SqlHelperParameterCache.GetCachedParameterSet(
                                              CONN_STRING, sql);
storedParams(0).Value = 2;
storedParams(1).Value = 3;

// 在命令中使用參數(shù)
DataSet ds;
ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                              CommandType.StoredProcedure,
                              sql, storedParams);

檢索存儲過程參數(shù)

SqlHelperParameterCache 還提供了針對特定存儲過程檢索參數(shù)數(shù)組的方法。一種名為 GetSpParameterSet 的重載方法提供了此功能,它包含兩種實(shí)現(xiàn)。該方法嘗試從緩存中檢索特定存儲過程的參數(shù)。如果這些參數(shù)尚未被緩存,則使用 .NET 的 SqlCommandBuilder 類從內(nèi)部檢索,并將它們添加到緩存中,以便用于后續(xù)的檢索請求。然后,為每個(gè)參數(shù)指定相應(yīng)的參數(shù)設(shè)置,最后將這些參數(shù)以數(shù)組形式返回給客戶端。以下代碼顯示了如何檢索 Northwind 數(shù)據(jù)庫中 SalesByCategory 存儲過程的參數(shù)。

[Visual Basic]
' 初始化連接字符串和命令文本
' 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
Const CONN_STRING As String = _
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;"
Dim spName As String = "SalesByCategory"

' 檢索參數(shù)
Dim storedParams(1) As SqlParameter
storedParams = SqlHelperParameterCache.GetSpParameterSet( _
                                          CONN_STRING, spName)
storedParams(0).Value = "Beverages"
storedParams(1).Value = "1997"

' 在命令中使用參數(shù)
Dim ds As DataSet
ds = SqlHelper.ExecuteDataset(CONN_STRING, _
                              CommandType.StoredProcedure, _
                              spName, storedParams)

[C#]
// 初始化連接字符串和命令文本
// 它們將構(gòu)成用來存儲和檢索參數(shù)的鍵
const string CONN_STRING = 
  "SERVER=(local); DATABASE=Northwind; INTEGRATED SECURITY=True;";
string spName = "SalesByCategory";

// 檢索參數(shù)
SqlParameter storedParams = new SqlParameter[2];
storedParams = SqlHelperParameterCache.GetSpParameterSet(
                                          CONN_STRING, spName);
storedParams[0].Value = "Beverages";
storedParams[1].Value = "1997";

// 在命令中使用參數(shù)
DataSet ds;
ds = SqlHelper.ExecuteDataset(CONN_STRING, 
                              CommandType.StoredProcedure,
                              spName, storedParams);