国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在SQL Server中使用CLR調(diào)用.NET方法實現(xiàn)思路

2024-07-10 13:17:23
字體:
供稿:網(wǎng)友
介紹
我們一起來做個示例,在.NET中新建一個類,并在這個類里新建一個方法,然后在SQL Server中調(diào)用這個方法。按照微軟所述,通過宿主 Microsoft .NET Framework 2.0 公共語言運行庫 (CLR),SQL Server 2005顯著地增強(qiáng)了數(shù)據(jù)庫編程模型。 這使得開發(fā)人員可以用任何CLR語言(如C#、VB.NET或C++等)來寫存儲過程、觸發(fā)器和用戶自定義函數(shù)。

我們?nèi)绾螌崿F(xiàn)這些功能呢?
為了使用CLR,我們需要做如下幾步:
1、在.NET中新建一個類,并在這個類里新建一個public方法。
2、編譯這個類為一個DLL。
3、在SQL Server中注冊這個DLL。
4、新建一個SQL Server函數(shù)來訪問指定的.NET方法。

接下來,我們一起來完成一個示例
首先,在Visual Studio中新建一個名為“SQLServerCLRTest”的類庫項目。 然后,新建一個名為“CLRFunctions”的類,并在其內(nèi)添加一個名為“HelloWold”的方法,代碼如下:

復(fù)制代碼 代碼如下:


public class CLRFunctions
{
public static string HelloWorld(string Name)
{
return ("Hello " + Name);
}
}


這是一個非常簡單的方法(為了讓SQL Server可以調(diào)用它,它必須要是public和static的),這個方法有一個string類型的參數(shù),返回信息為“Hello”加上你傳入的參數(shù)。

現(xiàn)在,我們需要編譯這個項目為一個DLL,并在SQL Server中注冊它。 這也是比較簡單的,在VS中右鍵單擊項目,選擇“生成”后程序就會生成一個DLL。 如果你的項目是調(diào)試模式的話,那么就可以在如下所示那樣的路徑里找到編譯好的DLL。

復(fù)制代碼 代碼如下:


C:/Documents and Settings/mark.smith/My Documents/Visual Studio 2005/Projects/SQLServerCLRTest/SQLServerCLRTest/bin/Debug/SQLServerCLRTest.dll


找到這個DLL后,我們就可以把它拷貝到我們的SQL Server機(jī)器上了,如果是相同機(jī)器的話我們只要記住這個路徑即可。

啟用CLR功能
默認(rèn)情況下,SQL Server中的CLR是關(guān)閉的,所以我們需要執(zhí)行如下命令打開CLR:

復(fù)制代碼 代碼如下:


exec sp_configure 'clr enabled',1
reconfigure
go


注冊DLL
為了調(diào)用我們寫的那個方法,需要在SQL Server中注冊我們剛剛編譯好的那個DLL。 我們可以在數(shù)據(jù)庫中使用如下命令來注冊DLL(路徑為你的DLL文件的路徑)

復(fù)制代碼 代碼如下:


CREATE ASSEMBLY asmHelloWorld FROM 'C:/SQLServerCLRTest.dll'


在SQL Server中調(diào)用我們的.NET方法
為了調(diào)用.NET方法,我們可以寫一個SQL Server自定義函數(shù),并在其內(nèi)使用“EXTERNAL NAME”來通知SQL Server使用CLR功能。 代碼如下:

復(fù)制代碼 代碼如下:


CREATE FUNCTION dbo.clrHelloWorld
(
@name as nvarchar(200)
)
RETURNS nvarchar(200)
AS EXTERNAL NAME asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld


上面的自定義函數(shù)做了兩項工作。 首先是聲明了一個nvarchar參數(shù),它等同于.NET里的string類型(如果將其設(shè)置為varchar并且后面使用了“EXTERNAL NAME”的話就會報錯)。然后使用“EXTERNAL NAME”來調(diào)用.NET方法。 語法如下:
程序集名.類名.方法名
但是,當(dāng)我使用這個語法調(diào)用.NET方法的時候,SQL Server就會報錯,所以為了讓它正常工作,我使用了如下語法:
程序集名.[類名].方法名
現(xiàn)在我們就可以通過如下語句調(diào)用.NET方法了:

復(fù)制代碼 代碼如下:


SELECT dbo.clrHelloWorld('Mark')


當(dāng)你運行這段代碼的時候,就會得到一個返回結(jié)果“Hello Mark”。
我們通過一個很簡單的示例演示了如何實現(xiàn)SQL Server的CLR,它可以給我們帶來很多非常有用的幫助。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 郸城县| 海原县| 北安市| 丰城市| 宁武县| 延安市| 伊通| 秭归县| 新乡县| 米林县| 昌平区| 九寨沟县| 兴海县| 新建县| 丹巴县| 嫩江县| 临沧市| 察雅县| 仪征市| 永康市| 蓝山县| 安远县| 化隆| 五指山市| 三河市| 舞阳县| 江门市| 贵阳市| 泗阳县| 玛纳斯县| 资源县| 芜湖县| 通州区| 巴彦县| 台东县| 天台县| 贡嘎县| 通辽市| 柘荣县| 罗田县| 丹寨县|