使用clr 调用C#编写的dll中的方法的全解释
使用clr 调用C#编写的dll中的方法的全解释
1.数据库初始化:
将下面这段代码直接在运行就可以初始化数据库了
exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
exec sp_configure 'show advanced options', '1';
go
ALTER DATABASE DB_Name set TRUSTWORTHY on;(打开数据库的TRUSTWORTHY 属性)
go
2.数据库添加程序集:
create assembly 程序集名字
from '程序集所存放的位置'
WITH permission_set = Safe;
3.创建数据库添加函数的映射
create function 函数名称
(
传入的参数 必须是 Nvarchar类型的 )
returns Nvarchar(1000)
as
external name 程序集名字.[程序集名.类名].方法名;
下面是我创建的用于加密的函数
USE [NjClient1]
GO
/****** Object: UserDefinedFunction [dbo].[jiami] Script Date: 2014/5/28 19:15:27 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[jiami](@明文 [nvarchar](1000))
RETURNS [nvarchar](1000) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [Des].[NjClient1.DES].[Encrypt]
4.调用函数进行加密
直接使用函数名括号内传入需要加密的字符串即可
SELECT dbo.jiemi(@参数)
解密过程同上加密过程
编写的C#代码中的一些注意事项
1.在需要让数据库调用的方法名前需要添加
[SqlFunction(DataAccess = DataAccessKind.None)]
同样的需要引入类库
using Microsoft.SqlServer.Server;
2.所有需要让数据库调用的方法都必须是静态方法static
3.生成dll所以用的.netframwork 版本不可以过高,建议使用2.0版本
加密方式:
这个加密需要使用数据库加载dll动态链接库创建程序集进行加密,动态链接库我已经生成好了,
你那把只需要加载动态链接库然后调用里面的加密方法就可以进行加密了。
我会给你一个dll文件,你只需要加载这个文件到程序集然后通过加载的程序集使用Encrypt方法既可以进行加密了,
传入参数为明文字符串,返回参数为密文字符串类型都为nvarchar(1000)类型
使用clr 调用C#编写的dll中的方法的全解释的更多相关文章
- C#动态调用C++编写的DLL函数
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- 纯静态界面中(html)中通过js调用dll中的方法从数据库中读取数据
最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概 ...
- 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象
发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...
- 动态的调用服务端的WCF中的方法
客户端调用wcf ,有时需要动态的调用服务端的WCF中的方法,本方法,反射wcf 的接口,动态调用接口中的方法. 主要为,动态绑定,反射动态调用. public static object Execu ...
- C++项目中采用CLR的方式调用C#编写的dll
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...
- 通过C#去调用C++编写的DLL
这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译 ...
- Delphi7调用DelphiXE编写的DLL问题
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...
- sql server中调用c#写的dll里的方法
最近有一项目: 一超市管理系统单机版,运行在WIN2003+SQL2005上,每天超市关门都都会关电脑,现客户要新加功能,每天关门下班后回家可以上网查看超市管理系统的数据库里的相关数据,然后再做一些原 ...
随机推荐
- BZOJ - 3196 Tyvj 1730 二逼平衡树 (线段树套treap)
题目链接 区间线段树套treap,空间复杂度$O(nlogn)$,时间复杂度除了查询区间k大是$O(log^3n)$以外都是$O(log^2n)$的. (据说线段树套线段树.树状数组套线段树也能过?) ...
- volley源码解析-Throwable类源码解析
前提知识点: 1.Serializable接口 作用:表示可序列化的语义.就是Java提供的通用数据保存和读取接口.任何类型实现了Serializeable接口,就可以被保存到文件中,或者作为数据流通 ...
- 理解SQL【转http://blog.jobbole.com/55086/】
很多程序员视 SQL 为洪水猛兽.SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言.面向对象的程序语言.甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言) ...
- jquery选择器 之 获取父级元素,子元素,同级元素
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link href ...
- Erlang基础 -- 介绍 -- Wordcount示例演示
在前两个blog中,已经说了Erlang的历史.应用场景.特点,这次主要演示一个Wordcount的示例,就是给定一个文本文件,统计这个文本文件中的单词以及该单词出现的次数. 今天和群友们讨论了一个问 ...
- 小程序切换账户拉取仓库文件的appid提示
小程序切换账户拉取仓库文件,拉取后appid会提示项目不是当前appid的项目,因为切换了账户,而每个小程序账户只有一个appid,所以会冲突 去project.config.json里吧appid改 ...
- nginx.conf几个示例
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- chrome瀏覽器去掉緩存的方法
方法一: 1.開發說打開開發者工具 勾選這個訪問可以 方法二: command+shift+R
- 【转】Jmeter项目测试
Jmeter的录制回放功能是现将你对要测试的项目进行访问的历史记录进行录制,然后虚拟出多个用户对历史记录进行回放,从而达到压力测试的目的. 录制是通过代理服务器进行录制. 一.下载地址 http:// ...
- NOIP2005普及组第4题 循环
NOIP2005普及组第4题 循环 时间限制: 1 Sec 内存限制: 128 MB提交: 27 解决: 6[提交][状态][讨论版][命题人:外部导入] 题目描述 乐乐是一个聪明而又勤奋好学的孩 ...