sql server 調(diào)用c#。net寫的dll
1、構(gòu)造dll:首先我們要在。net里面創(chuàng)建一個(gè)類庫(kù)工程,寫個(gè)簡(jiǎn)單的helloworld
using system;
namespace mydll
{
/// <summary>
/// class1 的摘要說明。
/// </summary>
public class class1
{
public class1()
{
//
// todo: 在此處添加構(gòu)造函數(shù)邏輯
//
}
public string sayhello()
{
return "helloworld";
}
}
}
mydll是這個(gè)dll的名字.編譯以后,到你輸出目錄里找mydll.dll生成了;切換到命令行模式,在mydll.dll的目錄下輸入sn -k mydll.snk生成密鑰對(duì);
然后回到你的vs.net工程下打開assemblyinfo.cs看[assembly: assemblykeyfile("")]選項(xiàng),輸入你的密鑰對(duì)路徑‘..//..//bin//debug//mydll.snk’
重新編譯mydll.dll;最后是裝配了,在命令行下輸入:regasm mydll.dll,成功后將mydll.dll拷貝到c:/windows/assembly目錄下
(這一步是聽說的,不知道啥用。但是實(shí)際我試過不用拷貝也可以調(diào)用)。
2、
sqlserver調(diào)用事例:
declare @ret int
declare @object int
declare @src varchar(500)
declare @desc varchar(500)
declare @return varchar(500)
exec @ret=sp_oacreate 'mydll.class1',@object out
if @ret <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select hr=convert(varbinary(4),@ret), [email protected], [email protected]
return
end
-- call a method that returns a value.
exec @ret = sp_oamethod @object, 'sayhello', @return out
if @ret <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select ret=convert(varbinary(4),@ret), [email protected], [email protected]
return
end
print 'result='[email protected]
-- destroy the object.
exec @ret = sp_oadestroy @object
if @ret <> 0
begin
exec sp_oageterrorinfo @object, @src out, @desc out
select ret=convert(varbinary(4),@ret), [email protected], [email protected]
return
end