激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - 在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)

2020-01-10 16:00heker2007 ASP.NET教程

本文接著上篇主要講如何使用Managed Code創(chuàng)建用戶自定義函數(shù),Visual Studio的SQL Server Project類型可以很容易的創(chuàng)建、編譯、配置managed database objects,此外還支持多種調(diào)試.

第八步:從表現(xiàn)層調(diào)用Managed Stored Procedures

  當(dāng)對數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層進行擴充以支持調(diào)用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan這2種managed stored procedures后,我們可以在一個ASP.NET頁面里展示這些存儲過程的結(jié)果了.

  打開AdvancedDAL文件夾里的ManagedFunctionsAndSprocs.aspx頁面,從工具箱拖一個GridView控件到設(shè)計器,設(shè)其ID為DiscontinuedProducts,在其智能標(biāo)簽里綁定到一個名為DiscontinuedProductsDataSource的ObjectDataSource控件,設(shè)置其調(diào)用ProductsBLLWithSprocs class類的GetDiscontinuedProducts方法.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖20:調(diào)用ProductsBLLWithSprocs Class類

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖21:在SELECT標(biāo)簽里調(diào)用GetDiscontinuedProducts方法

  由于我們只需要展示產(chǎn)品信息,在UPDATE, INSERT,和DELETE標(biāo)簽里選  “(None)”,再點Finish完成配置.完成后Visual Studio會為ProductsDataTable表的列自動的添加BoundField列 或 CheckBoxField列. 將除ProductName和Discontinued以外的列全部刪除.這樣你的GridView 和 ObjectDataSource的聲明代碼看起來和下面的差不多:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<asp:GridView ID="DiscontinuedProducts" runat="server"
 AutoGenerateColumns="False" DataKeyNames="ProductID"
 DataSourceID="DiscontinuedProductsDataSource">
 <Columns>
 <asp:BoundField DataField="ProductName" HeaderText="ProductName"
  SortExpression="ProductName" />
 <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued"
 
SortExpression="Discontinued" />
 
 </Columns>
 
</asp:GridView>
 
<asp:ObjectDataSource ID="DiscontinuedProductsDataSource" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="GetDiscontinuedProducts" TypeName="ProductsBLLWithSprocs"> </asp:ObjectDataSource>

  花點時間在瀏覽器里登錄該頁面。當(dāng)?shù)卿洉r,ObjectDataSource控件將調(diào)用ProductsBLLWithSprocs class類的 GetDiscontinuedProducts方法.就像我們在第七步看到的那樣,該方法又調(diào)用DAL層的ProductsDataTable class類的GetDiscontinuedProducts方法,該方法又調(diào)用存儲過程GetDiscontinuedProducts.該存儲過程返回那些處于“discontinued”狀態(tài)的產(chǎn)品. 存儲過程返回的結(jié)果填充到DAL層的一個ProductsDataTable,進而返回給BLL,再返回給表現(xiàn)層并綁定到一個GridView控件展現(xiàn)出來.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖22:“Discontinued”的產(chǎn)品被列出來了

  我們可以繼續(xù)加強練習(xí),比如在頁面上再放置一個TextBox控件和一個GridView控件。在TextBox控件里輸入一個數(shù),而GridView控件調(diào)用ProductsBLLWithSprocs class類的GetProductsWithPriceLessThan方法將價格低于該數(shù)的產(chǎn)品展示出來.

第九步:創(chuàng)建并調(diào)用T-SQL UDFs

  用戶自定義函數(shù)——簡稱UDF,是一種數(shù)據(jù)庫對象,與編程語言里的函數(shù)定義很相仿.與C#里面的函數(shù)類似,UDF可以包含一系列的輸入?yún)?shù)并返回一個特定類型的值.一個UDF要么返回標(biāo)量數(shù)據(jù)(scalar data)——比如一個string, 一個integer等等;要么返回一個表列數(shù)據(jù)(tabular data).讓我們先快速的考察一下這2種類型的UDF,先從標(biāo)量數(shù)據(jù)類型開始.

  下面的UDF用于計算某個特定產(chǎn)品的總價.其有3個輸入?yún)?shù)——UnitPrice, UnitsInStock,Discontinued.其返回一個money類型的值.它通過以UnitPrice乘以UnitsInStock來得到總價,如是處于“discontinued”狀態(tài),則總價減半.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE FUNCTION udf_ComputeInventoryValue
(
 @UnitPrice money,
 @UnitsInStock smallint,
 @Discontinued bit
)
RETURNS money
AS
BEGIN
 DECLARE @Value decimal
 
 SET @Value = ISNULL(@UnitPrice, 0) * ISNULL(@UnitsInStock, 0)
 
 IF @Discontinued = 1
 SET @Value = @Value * 0.5
 
 RETURN @Value
END

  將該UDF添加到數(shù)據(jù)庫后,我們打開Management Studio,打開Programmability文件夾,再打開Functions文件夾,再打開Scalar-value Functions文件夾,就可以看到該UDF.我們可以在一個SELECT查詢里這樣來使用:

?
1
2
3
4
SELECT ProductID, ProductName, dbo.udf_ComputeInventoryValue
 (UnitPrice, UnitsInStock, Discontinued) as InventoryValue
FROM Products
ORDER BY InventoryValue DESC

  我已經(jīng)將該udf_ComputeInventoryValue用戶函數(shù)添加到了Northwind數(shù)據(jù)庫。圖23就是在Management Studio里調(diào)用上述SELECT查詢得到的輸出結(jié)果.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖23:列出了每個產(chǎn)品的總價

UDF也可以返回表列數(shù)據(jù).比如,我們可以創(chuàng)建一個UDF返回屬于某個category的所有產(chǎn)品:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE FUNCTION dbo.udf_GetProductsByCategoryID
(
 @CategoryID int
)
RETURNS TABLE
AS
RETURN
(
 SELECT ProductID, ProductName, SupplierID, CategoryID,
  QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
  ReorderLevel, Discontinued
 FROM Products
 WHERE CategoryID = @CategoryID
)

  該udf_GetProductsByCategoryID用戶函數(shù)接受一個@CategoryID輸入?yún)?shù),返回SELECT查詢的結(jié)果.一旦創(chuàng)建之后,該UDF就可以在SELECT查詢的FROM (或 JOIN)之句里引用.下面的示例返回飲料類所屬的每個產(chǎn)品的ProductID, ProductName,CategoryID值:

?
1
2
SELECT ProductID, ProductName, CategoryID
FROM dbo.udf_GetProductsByCategoryID(1)

  我已經(jīng)將該udf_GetProductsByCategoryID用戶函數(shù)添加到Northwind數(shù)據(jù)庫。圖24顯示的是在Management Studio運行上述SELECT查詢的結(jié)果.返回表列數(shù)據(jù)的UDF放在Table-value Functions文件夾里.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖24:飲料類產(chǎn)品的ProductID, ProductName,CategoryID都列出來了

  注意:關(guān)于創(chuàng)建和使用UDF的更多詳情,請參閱文章《Intro to User-Defined Functions》和《dvantages and Drawbacks of User-Defined Functions》

第十步:創(chuàng)建一個Managed UDF

  上面示例里創(chuàng)建的udf_ComputeInventoryValue和 udf_GetProductsByCategoryID用戶函數(shù)都是T-SQL數(shù)據(jù)庫對象.SQL Server 2005同樣支持managed UDF,我們可以將其添加到ManagedDatabaseConstructs工程,就像在第三和第五步做的那樣.在這一步,我們將用managed code執(zhí)行udf_ComputeInventoryValue用戶函數(shù).

  在解決資源管理器里右鍵單擊,選擇“Add a New Item”,在對話框里選User-Defined Function模板,將新UDF文件命名為udf_ComputeInventoryValue_Managed.cs.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖25:向ManagedDatabaseConstructs工程添加一個Managed UDF

  該User-Defined Function模板將創(chuàng)建一個名為UserDefinedFunctions的partial class類,同時還有一個方法,該方法的名字與類文件的名字一樣(就本例而言,為udf_ComputeInventoryValue_Managed)。該方法有一個SqlFunction特性, 這就標(biāo)明了該方法是一個managed UDF.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
 
public partial class UserDefinedFunctions
{
 [Microsoft.SqlServer.Server.SqlFunction]
 public static SqlString udf_ComputeInventoryValue_Managed()
 {
 // Put your code here
 return new SqlString("Hello");
 }
}

  該udf_ComputeInventoryValue方法目前返回一個SqlString對象,且不接受任何的輸入?yún)?shù).我們將對其進行更新以包含3個參數(shù)——UnitPrice, UnitsInStock,和Discontinued,并返回一個SqlMoney對象.該方法用到邏輯與上面的T-SQL類型的udf_ComputeInventoryValue用戶函數(shù)的一樣.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlMoney udf_ComputeInventoryValue_Managed
 (SqlMoney UnitPrice, SqlInt16 UnitsInStock, SqlBoolean Discontinued)
{
 SqlMoney inventoryValue = 0;
 
 if (!UnitPrice.IsNull && !UnitsInStock.IsNull)
 {
 inventoryValue = UnitPrice * UnitsInStock;
 
 if (Discontinued == true)
  inventoryValue = inventoryValue * new SqlMoney(0.5);
 }
 
 return inventoryValue;
}

  我們注意到UDF方法的輸入?yún)?shù)就是其對應(yīng)的SQL類型:UnitPrice的類型為SqlMoney、UnitsInStock的類型為SqlInt16、Discontinued的類型為SqlBoolean.這些類型反映了這些列在Products表里定義的類型:UnitPrice列的類型為money、UnitsInStock列的類型為smallint、Discontinued列的類型為bit.

  代碼首先創(chuàng)建了一個SqlMoney類型的名為inventoryValue的實例,并賦值為0.由于Products表允許UnitsInPrice 和 UnitsInStock列的值為NULL,因此我們首先通過SqlMoney對象的IsNull屬性來檢查這2列是否包NULL值。如果這2列的值都不為NULL,那么UnitPrice乘以UnitsInStock就得到了inventoryValue的值,另外如果Discontinued為true的話,inventoryValue的值減半.

  注意:由于SqlMoney對象只允許2個SqlMoney實例相乘,它不允許一個SqlMoney實例與一浮點數(shù)(literal floating-point)相乘,所以在代碼里我們用一個值為0.5的SqlMoney實例與inventoryValue相乘.

第11步驟:配置Managed UDF

  現(xiàn)在我們已經(jīng)創(chuàng)建了一個managed UDF,我們將把它配置給Northwind數(shù)據(jù)庫.就像我們在第四步看到的那樣,在解決資源管理器里,在工程名上右鍵單擊選“Deploy”.

完成后,返回到SQL Server Management Studio,刷新Scalar-valued Functions文件夾.你就會看到2個實體:

.dbo.udf_ComputeInventoryValue——在第九步創(chuàng)建的T-SQL UDF

.dbo.udf ComputeInventoryValue_Managed——我們在第10步剛剛創(chuàng)建的managed UDF

對該managed UDF進行測試,在Management Studio里執(zhí)行如下的查詢:

?
1
2
3
4
5
6
7
8
SELECT ProductID, ProductName,
 dbo.udf_ComputeInventoryValue_Managed(
   UnitPrice,
   UnitsInStock,
   Discontinued
  ) as InventoryValue
FROM Products
ORDER BY InventoryValue DESC

該命令使用的是udf ComputeInventoryValue_Managed函數(shù)而不是udf_ComputeInventoryValue函數(shù),但是輸出結(jié)果都一樣,可以查看圖23的截屏.

第12步:調(diào)試Managed Database Objects

  在第72章我們探討了通過Visual Studio調(diào)試SQL Server的3種模式:直接數(shù)據(jù)庫調(diào)試、應(yīng)用程序調(diào)試、通過SQL Server Project調(diào)試.Managed database objects不能用直接數(shù)據(jù)庫模式調(diào)試,不過可以從一個客戶端程序和SQL Server Project來調(diào)試.為了使調(diào)試正常工作,SQL Server 2005 數(shù)據(jù)庫要求必須允許SQL/CLR調(diào)試.記得當(dāng)我們最初創(chuàng)建ManagedDatabaseConstructs工程時,Visual Studio詢問我們是否激活SQL/CLR調(diào)試(見第2步的圖6).我們可以在Server Explorer窗口里在數(shù)據(jù)庫上右鍵單擊,以對該配置進行修改.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖26:確保數(shù)據(jù)庫激活SQL/CLR調(diào)試

  設(shè)想我們想調(diào)試GetProductsWithPriceLessThan存儲過程.我們首先要在GetProductsWithPriceLessThan方法的代碼里設(shè)置斷點.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖27:在GetProductsWithPriceLessThan方法里設(shè)置斷點

  首先我們考察從SQL Server Project里調(diào)試managed database objects.

  由于我們的解決資源管理器里包含2個工程——ManagedDatabaseConstructs SQL Server Project以及我們的website.為了從SQL Server Project進行調(diào)試,當(dāng)調(diào)試時我們需要引導(dǎo)Visual Studio開啟ManagedDatabaseConstructs SQL Server Project.在解決資源管理器里的ManagedDatabaseConstructs project上點擊右鍵,選“Set as StartUp Project”項.

  當(dāng)從調(diào)試器打開ManagedDatabaseConstructs project時,它執(zhí)行Test.sql文件的SQL statements,該文件位于Test Scripts文件夾.比如,要測試GetProductsWithPriceLessThan存儲過程的話,將Test.sql文件的內(nèi)容替換為下面的statement,這些statement調(diào)用GetProductsWithPriceLessThan存儲過程,其輸入?yún)?shù)@CategoryID的值為14.95:

?
1
exec GetProductsWithPriceLessThan 14.95

  一旦將上面的腳本鍵入Test.sql文件,點Debug菜單里的“Start Debugging”項,或按F5或是工具欄上的綠色圖標(biāo)啟動調(diào)試.這將在資源管理器里構(gòu)建工程,將該managed database objects配置給Northwind數(shù)據(jù)庫,然后執(zhí)行Test.sql腳本.此時,將會遇到斷點,我們可以進入GetProductsWithPriceLessThan方法,檢查輸入?yún)?shù)的值等等.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖28:碰到GetProductsWithPriceLessThan方法里的斷點

  為了從客戶端程序調(diào)試一個SQL database object,數(shù)據(jù)庫務(wù)必要配置為支持應(yīng)用程序調(diào)試.在服務(wù)器資源管理器里,在數(shù)據(jù)庫上右鍵單擊,確保選中“Application Debugging”項。另外,我們還要將ASP.NET應(yīng)用程序與SQL Debugger結(jié)合起來,而且關(guān)閉連接池.這些步驟我們在第74章的第2步里詳細探討過了.

  一旦你配置完ASP.NET應(yīng)用程序和數(shù)據(jù)庫.設(shè)置ASP.NET website為啟動方案.如果你登錄一個調(diào)用設(shè)置了斷點的managed objects的頁面的話,該程序就會碰到斷點,并轉(zhuǎn)換到調(diào)試器,在調(diào)試器里你可以進入代碼,就像圖28那樣.

第13步:手動編譯并配置Managed Database Objects

  使用SQL Server Projects,我們可以很容易的創(chuàng)建、編譯、配置managed database objects.不過遺憾的是,只有在Visual Studio的Professional 和 Team Systems這2個版本才可以使用SQL Server Projects.如果你使用的是Visual Web Developer 或 Standard Edition版本,并且打算使用managed database objects的話,你需要手動創(chuàng)建并配置它們.這將包括4個步驟:

1.創(chuàng)建一個文件來存放managed database object的源代碼

2.將object進行編譯

3.將編譯文件注冊到SQL Server 2005數(shù)據(jù)庫

4.在SQL Server里創(chuàng)建一個數(shù)據(jù)庫對象,并指向編譯文件里的相應(yīng)的方法

  為便于演示,我們將創(chuàng)建一個新的managed stored procedure,返回那些UnitPrice值高于指定值的產(chǎn)品.在你的電腦上創(chuàng)建一個名為GetProductsWithPriceGreaterThan.cs 的新文件,并鍵入如下的代碼(你可以使用Visual Studio, Notepad或任何的文本編輯器來進行):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
 
public partial class StoredProcedures
{
 [Microsoft.SqlServer.Server.SqlProcedure]
 public static void GetProductsWithPriceGreaterThan(SqlMoney price)
 {
 // Create the command
 SqlCommand myCommand = new SqlCommand();
 myCommand.CommandText =
  @"SELECT ProductID, ProductName, SupplierID, CategoryID,
   QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
   ReorderLevel, Discontinued
  FROM Products
  WHERE UnitPrice > @MinPrice";
 
 myCommand.Parameters.AddWithValue("@MinPrice", price);
 
 // Execute the command and send back the results
 SqlContext.Pipe.ExecuteAndSend(myCommand);
 }
}

  這些代碼與我們在第五步創(chuàng)建的GetProductsWithPriceLessThan方法的代碼很相似.唯一的不同在于:方法名不同、WHERE字句不同、以及查詢使用的參數(shù)名不同.返回到GetProductsWithPriceLessThan方法,其WHERE字句為“WHERE UnitPrice < @MaxPrice”. 而在這里,GetProductsWithPriceGreaterThan方法里,代碼為“WHERE UnitPrice > @MinPrice”.

  我們現(xiàn)在需要將該類進行編譯.在命令行里導(dǎo)航到你存放GetProductsWithPriceGreaterThan.cs文件的根目錄,并使用C#編譯器(csc.exe)來進行編譯:

?
1
csc.exe /t:library /out:ManuallyCreatedDBObjects.dll GetProductsWithPriceGreaterThan.cs

  如果包含csc.exe的文件夾沒有位于系統(tǒng)路徑,那你將必須完全引用其路徑,%WINDOWS%/Microsoft.NET/Framework/version/,比如:

?
1
C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/csc.exe /t:library /out:ManuallyCreatedDBObjects.dll GetProductsWithPriceGreaterThan.cs

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖29:對GetProductsWithPriceGreaterThan.cs文件進行編譯

  其中,/t標(biāo)記指定將C# class類編譯為一個DLL(而不是可執(zhí)行文件)。而 /out標(biāo)記指定了編譯后文件的名稱.

  注意:除了用命令行來編譯GetProductsWithPriceGreaterThan.cs class類外,我們還可以使用Visual C# Express Edition或在Visual Studio Standard Edition版里創(chuàng)建一個單獨的Class Library project.S?ren Jacob Lauritsen為我們提供了一個Visual C# Express Edition project,它包含了GetProductsWithPriceGreaterThan存儲過程,以及我們在第3、5和10步里創(chuàng)建的那2個managed stored procedures 和 UDF.此外還包含了添加相應(yīng)數(shù)據(jù)庫對象必需的T-SQL commands.

  將代碼編譯完后,我們需要將其注冊到SQL Server 2005數(shù)據(jù)庫.可以通過T-SQL,使用命令CREATE ASSEMBLY,或通過SQL Server Management Studio. 我們來看使用Management Studio的情況.

  在Management Studio里,展開Northwind數(shù)據(jù)庫里的Programmability文件夾,其內(nèi)有一個Assemblies文件夾。在該文件夾上右鍵單擊,選“New Assembly”.這將開啟New Assembly對話框(見圖30),點擊Browse按鈕,選擇我們剛剛編譯的ManuallyCreatedDBObjects.dll文件,再點OK完成添加.在Object Explorer里你應(yīng)該可以看到ManuallyCreatedDBObjects.dll文件.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖30:將ManuallyCreatedDBObjects.dll添加到數(shù)據(jù)庫

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖31:ManuallyCreatedDBObjects.dll展示在Object Explorer里


完成后,我們要將一個存儲過程與編譯文件里的GetProductsWithPriceGreaterThan方法聯(lián)系起來.為此,打開一個new query窗口,執(zhí)行下面的腳本:

?
1
2
3
4
5
6
7
8
CREATE PROCEDURE [dbo].[GetProductsWithPriceGreaterThan]
(
 @price [numeric](18, 0)
)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [ManuallyCreatedDBObjects].[StoredProcedures].[GetProductsWithPriceGreaterThan]
GO

  這將在Northwind數(shù)據(jù)庫里創(chuàng)建一個名為etProductsWithPriceGreaterThan的新存儲過程,并將其與GetProductsWithPriceGreaterThan方法聯(lián)系起來(該方法屬于編譯文件ManuallyCreatedDBObjects)

  執(zhí)行完腳本后,在Object Explorer里刷新Stored Procedures文件夾。你將看到一個新的存儲過程——GetProductsWithPriceGreaterThan,在該存儲過程旁邊有一個鎖的圖標(biāo).測試該存儲過程,在查詢窗口鍵入并執(zhí)行如下的腳本:

exec GetProductsWithPriceGreaterThan 24.95

如圖32所示,上述命令將那些價格高于24.95的產(chǎn)品展示出來.

在ASP.NET 2.0中操作數(shù)據(jù)之七十四:用Managed Code創(chuàng)建存儲過程和用戶自定義函數(shù)(下部分)
圖32:在對象資源管理器的顯示的列表

結(jié)語:

  Microsoft SQL Server 2005整合了Common Language Runtime (CLR),它允許用managed code來創(chuàng)建數(shù)據(jù)庫對象.在以前,要創(chuàng)建數(shù)據(jù)庫對象,我們只能使用T-SQL, 但是現(xiàn)在我們可以使用.NET編程語言,比如C#來進行創(chuàng)建. 在本文我們創(chuàng)建了2個managed stored procedures以及一個managed User-Defined Function.

  Visual Studio的SQL Server Project類型可以很容易的創(chuàng)建、編譯、配置managed database objects,此外還支持多種調(diào)試.遺憾的是,SQL Server Project類型只有在Visual Studio的Professional 和 Team Systems版本才有。對于Visual Web Developer 或Standard版的用戶而言,要手工完成這些步驟,就想我們在第13步看到的那樣.

  祝編程快樂!

作者簡介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創(chuàng)始人,自1998年以來一直應(yīng)用 微軟Web技術(shù)。希望對大家的學(xué)習(xí)ASP.NET有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日日夜av | 日韩一级精品 | av在线网站观看 | 黄色av电影在线播放 | 5xsq在线视频 | 日日操夜 | 色成人在线 | 国产乱色精品成人免费视频 | 在线看一区二区三区 | 激情在线视频 | 国产精品一区二区三区99 | 欧美四级在线观看 | 成年人福利视频 | 亚洲一区二区三区在线免费观看 | 久久久久中文字幕 | 久久久www视频 | 91看片www | 国产青草视频在线观看视频 | 欧美中文字幕一区二区三区亚洲 | 精品国产一区二区三区四 | 国产剧情在线观看一区二区 | 最新av在线播放 | 91精品视频网址 | 久久成人精品视频 | 黄色成年在线观看 | 亚洲视频高清 | 欧日韩在线视频 | 日韩视频一区在线 | 久久精品无码一区二区三区 | 在线中文字幕不卡 | 久久国产免费视频 | 国产一级免费av | 亚洲一区第一页 | 亚洲日本高清 | 久久精品中文字幕一区 | 国产无区一区二区三麻豆 | 久久精品亚洲精品国产欧美kt∨ | 国产交换3p国产精品 | 国产日产精品久久久久快鸭 | 色人阁导航 | 中文字幕在线免费 |