用CLR集成为SQL 2005添加简繁转换功能

王朝学院·作者佚名  2009-04-22
窄屏简体版  字體: 小  |  中  |  大  |  超大  

最近的一个项目中要用到把输入到系统的内容都转换成繁体存储到另外一个字段,系统是asp+sql2005,本来是想在asp中来实现这个功能,只是asp实现这个貌似有点困难,就想到了微软的一个Microsoft Visual Studio International Pack v1.0,里面就有中文字处理功能,还比较丰富,这里只用简繁转换。Microsoft Visual Studio International Pack v1.0的下载地址:http://download.microsoft.com/download/5/7/3/57345088-ACF8-4E9B-A9A7-EBA35452DEF2/vsintlpack1.zip。解压之后安装CHTCHSConv.msi,安装之后新建一个类库类目,添加对Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool引用。引入Microsoft.SqlServer.Server;

Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

命名空间。

下面是代码:

view plaincopy to clipboardprint?

using Microsoft.SqlServer.Server;

using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

namespace IMELSChineseConverter

{

public class MelsChineseConverter

{

[SqlFunction(DataAccess = DataAccessKind.None)]

public static string Convert(string text, string Direction)

{

string ctext = string.Empty;

if (Direction.ToLower() == "s2t")

{

ctext = ChineseConverter.Convert(text, ChineseConversionDirection.SimplifiedToTraditional);

}

else if(Direction.ToLower() == "t2s")

{

ctext = ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplified);

}

return ctext;

}

}

}

using Microsoft.SqlServer.Server;

using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

namespace IMELSChineseConverter

{

public class MelsChineseConverter

{

[SqlFunction(DataAccess = DataAccessKind.None)]

public static string Convert(string text, string Direction)

{

string ctext = string.Empty;

if (Direction.ToLower() == "s2t")

{

ctext = ChineseConverter.Convert(text, ChineseConversionDirection.SimplifiedToTraditional);

}

else if(Direction.ToLower() == "t2s")

{

ctext = ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplified);

}

return ctext;

}

}

}

这里要把这个功能集成到SQL2005里去,就要用到SQL2005的CLR集成。现在我们来启用SQL2005的CLR集成:

开始--所有程序--Microsoft SQL Server 2005--配置工具--SQL Server 外围应用配置器--功能的外围应用配置器--CLR集成--启用CLR集成。

之后我们给SQL2005添加这个程序集,假如我们要为DataBaseTest这个数据库来增加此程序集,

在SQL里执行如下语句

USE [DataBaseTest]

GO

ALTER DATABASE [DataBaseTest] SET TRUSTWORTHY ON

create assembly IMELSChineseConverter from 'D:\SqlCLR\IMELSChineseConverter.dll' WITH PERMISSION_SET = UNSAFE

然后我们再建立一个SQLFunction来应用这个程序

USE [DataBaseTest]

GO

CREATE FUNCTION [dbo].[MelsChineseConverter](@text [nvarchar](max), @Direction [nvarchar](20))

RETURNS [nvarchar](max) WITH EXECUTE AS CALLER

AS

EXTERNAL NAME [IMELSChineseConverter].[IMELSChineseConverter.MelsChineseConverter].[Convert]

现在我们就可以应用这个函数来进行简繁转换了

SELECT [dbo].[MelsChineseConverter]('中国','s2t')

结果:中國

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航