zl程序教程

您现在的位置是:首页 >  后端

当前栏目

SQLServer中调用C#类中的方法实例(使用.NET程序集)

2023-06-13 09:15:29 时间

需求是这样的,我在.net程序里操作数据时将一些字段数据加密了,这些数据是很多系统共用的,其中一delphi程序也需要用到,并且需要将数据解密,由于我在.net里加密的方式比较特殊,在delphi程序里解密比较繁琐且要消耗很多时间,所以不得不让sqlserver调用程序集的方式来解决问题。

下面只是一个例子,贴出来共享。

建立一个dll,class,代码如下:

复制代码代码如下:


namespaceMyDll
{
   publicpartialclassMyClass
   {
       [SqlMethod]
       publicstaticSqlStringUrlDecode(stringvalue)
       {
           returnnewSqlString(HttpUtility.UrlDecode(value));
       }
   }
}

放到数据库服务器上。

之后运行下面的T-SQL代码:

复制代码代码如下:

EXECsp_configure"showadvancedoptions","1";
GO
RECONFIGURE;
GO
EXECsp_configure"clrenabled","1"
RECONFIGURE;
GO
 
ALTERDATABASEDBNameSETTRUSTWORTHYON
GO
 
CREATEASSEMBLY
[System.Web]FROM
"C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\System.Web.dll"
WITHpermission_set=UNSAFE
GO
 
CREATEASSEMBLYSQL_CLR_Url
FROM"C:\MyDLL.dll"
WITHPERMISSION_SET=UNSAFE
 
GO
 
CREATEFUNCTIONSqlUrlDecode(@urlstrNVARCHAR(4000))
RETURNSNVARCHAR(4000)
AS
EXTERNALNAMESQL_CLR_Url.[SqlClr.MyClass].UrlDecode
GO

然后就可以在T-SQL里调用这个函数了。

复制代码代码如下:
selectdbo.SqlUrlDecode(Name)fromTable