交友约会| 杂志期刊| 小说| 论坛| 电影下载| 两性知识| 电脑知识| 汽车| 旅游| 收藏

在SQL Server中使用CLR调用.NET方法

来源: 作者: 出处:综艺读书 2007-07-03 进入讨论组
关 键 词:数据库  存储过程  word  vb.net  sql server  

  作者:Mark Smith
翻译:webabcd

介绍
    我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法。按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显着地增强了数据库编程模型。 这使得开发人员可以用任何CLR语言(如C#、VB.NETC++等)来写存储过程、触发器和用户自定义函数。

我们如何实现这些功能呢?
为了使用CLR,我们需要做如下几步:
    1、在.NET中新建一个类,并在这个类里新建一个public方法。
    2、编译这个类为一个DLL。
    3、在SQL Server中注册这个DLL。
    4、新建一个SQL Server函数来访问指定的.NET方法。

    接下来,我们一起来完成一个示例
    首先,在Visual Studio中新建一个名为“SQLServerCLRTest”的类库项目。 然后,新建一个名为“CLRFunctions”的类,并在其内添加一个名为“HelloWold”的方法,代码如下:
在SQL Server中使用CLR调用.NET方法(图一)public class CLRFunctions 
在SQL Server中使用CLR调用.NET方法(图二)在SQL Server中使用CLR调用.NET方法(图三)在SQL Server中使用CLR调用.NET方法(图四){
在SQL Server中使用CLR调用.NET方法(图五)    public static string HelloWorld(string Name) 
在SQL Server中使用CLR调用.NET方法(图六)在SQL Server中使用CLR调用.NET方法(图七)    在SQL Server中使用CLR调用.NET方法(图四){
在SQL Server中使用CLR调用.NET方法(图五)        return ("Hello " + Name);
在SQL Server中使用CLR调用.NET方法(图八)    }
在SQL Server中使用CLR调用.NET方法(图九)}

    这是一个非常简单的方法(为了让SQL Server可以调用它,它必须要是public和static的),这个方法有一个string类型的参数,返回信息为“Hello”加上你传入的参数。

    现在,我们需要编译这个项目为一个DLL,并在SQL Server中注册它。 这也是比较简单的,在VS中右键单击项目,选择“生成”后程序就会生成一个DLL。 如果你的项目是调试模式的话,那么就可以在如下所示那样的路径里找到编译好的DLL。
在SQL Server中使用CLR调用.NET方法(图一)C:\Documents and Settings\mark.smith\My Documents\Visual Studio 2005\Projects\SQLServerCLRTest\SQLServerCLRTest\bin\Debug\SQLServerCLRTest.dll

    找到这个DLL后,我们就可以把它拷贝到我们的SQL Server机器上了,如果是相同机器的话我们只要记住这个路径即可。

启用CLR功能
    默认情况下,SQL Server中的CLR是关闭的,所以我们需要执行如下命令打开CLR:
在SQL Server中使用CLR调用.NET方法(图一)exec sp_configure 'clr enabled',1   
在SQL Server中使用CLR调用.NET方法(图一)reconfigure   
在SQL Server中使用CLR调用.NET方法(图一)go 


注册DLL
    为了调用我们写的那个方法,需要在SQL Server中注册我们刚刚编译好的那个DLL。 我们可以在数据库中使用如下命令来注册DLL(路径为你的DLL文件的路径)
在SQL Server中使用CLR调用.NET方法(图一)CREATE ASSEMBLY asmHelloWorld FROM 'C:\SQLServerCLRTest.dll'   


在SQL Server中调用我们的.NET方法
     为了调用.NET方法,我们可以写一个SQL Server自定义函数,并在其内使用“EXTERNAL NAME”来通知SQL Server使用CLR功能。 代码如下:
在SQL Server中使用CLR调用.NET方法(图一)CREATE FUNCTION dbo.clrHelloWorld   
在SQL Server中使用CLR调用.NET方法(图一)(   
在SQL Server中使用CLR调用.NET方法(图一)    @name as nvarchar(200)   
在SQL Server中使用CLR调用.NET方法(图一))    
在SQL Server中使用CLR调用.NET方法(图一)RETURNS nvarchar(200)   
在SQL Server中使用CLR调用.NET方法(图一)AS EXTERNAL NAME asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld 

    上面的自定义函数做了两项工作。 首先是声明了一个nvarchar参数,它等同于.NET里的string类型(如果将其设置为varchar并且后面使用了“EXTERNAL NAME”的话就会报错)。然后使用“EXTERNAL NAME”来调用.NET方法。 语法如下:
在SQL Server中使用CLR调用.NET方法(图一)程序集名.类名.方法名

    但是,当我使用这个语法调用.NET方法的时候,SQL Server就会报错,所以为了让它正常工作,我使用了如下语法:
在SQL Server中使用CLR调用.NET方法(图一)程序集名.[类名].方法名

    现在我们就可以通过如下语句调用.NET方法了:
在SQL Server中使用CLR调用.NET方法(图一)SELECT dbo.clrHelloWorld('Mark')

    当你运行这段代码的时候,就会得到一个返回结果“Hello Mark”。

    我们通过一个很简单的示例演示了如何实现SQL Server的CLR,它可以给我们带来很多非常有用的帮助。 更多文章 更多内容请看.NET开发手册  .NET实用开发  .NET移动与嵌入式技术专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·SQL Server 数据处理专题 (1446篇文章)
·SQL Server 索引和查询专题 (2636篇文章)
·SQL Server (1409篇文章)
·.NET移动与嵌入式技术 (4907篇文章)
·.NET开发手册 (4702篇文章)
·.NET实用开发 (1339篇文章)
·.NET与数据库 (389篇文章)
·SQL Server (1410篇文章)
热点标签: 数据库  存储过程  word  vb.net  sql server  
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|