sql 调用 c# 的非静态方法的 dll,不成功,为什么?

wangying198791 2011-01-05 02:16:50

1。类 库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace mydll2901
{
public class Class1
{

public Class1()
{ }

public string hello()
{
return "helloworld";
}

}
}



2。注册成功 OLE/COM Object View 中可以查看到


3。建立存储过程:



create procedure mydll2901



as



declare @object int

declare @hr int

declare @return varchar(255)

declare @src varchar(255)

declare @desc varchar(255)



EXEC @hr = sp_OACreate 'mydll2901.Class1', @object OUT
if @hr<>0
begin
exec sp_OAGetErrorInfo @object,@src OUT,@desc OUT
select 'create error',hr=convert(varbinary(4),@hr),Source=@src,Description=@desc
--return
end



EXEC @hr = sp_OAMethod @object,'hello',@return OUT
if @hr<>0
begin
exec sp_OAGetErrorInfo @object,@src OUT,@desc OUT
select 'method error',hr=convert(varbinary(4),@hr),Source=@src,description=@desc
end
print @return


exec @hr=sp_OADestroy @object

if @hr<>0

begin

exec sp_OAGetErrorInfo @object,@src out,@desc out

select 'destroy error',hr=convert(varbinary(4),@hr),Source=@src,description=@desc

return

end

4。执行存储过程:


exec mydll2901

执行结果: create error 0x80131700 ODSOLE Extended Procedure NULL

不知道是怎么回事?
请知道的朋友能帮我解决一下

附:
通过
<html>
<body>
<script language="VBScript">

Dim o : Set o=CreateObject("mydll2901.Class1")

MsgBox "Result : " & o.hello()


Set o=Nothing

</script>

</body>
</html>
这个调用,是可以的
...全文
191 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
还有没有人知道怎么回事?
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
这个例子我看过
OLE/COM Object View 中可以查看到类
而且
html代码可以调用 dll
<html>
<body>
<script language="VBScript">

Dim o : Set o=CreateObject("mydll2901.Class1")

MsgBox "Result : " & o.hello()


Set o=Nothing

</script>

</body>
</html>

我不知道是什么问题了。。。
快溜 2011-01-05
  • 打赏
  • 举报
回复
tangshuinet 2011-01-05
  • 打赏
  • 举报
回复
说什么呢?都
快溜 2011-01-05
  • 打赏
  • 举报
回复
哦,误解你的意思了,看错误提示好像没找到你的dll。
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
我是想通过 sql server 调用 c# 的dll
其中被调用的方法是非静态的
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
完整的错误信息:

create error 0x80131700 ODSOLE Extended Procedure NULL

method error 0x80042725 ODSOLE Extended Procedure sp_OAMethod 用法: ObjPointer int IN, MethodName varchar IN [, @returnval <any> OUT [, additional IN, OUT, or BOTH params]]

description error 0x80042728 ODSOLE Extended Procedure sp_OADestroy 用法: ObjPointerToBeDestroyed int IN。
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
存储过程有错误?
请问哪里有错误?


我执行存储过程时出错:
exec mydll2901

create error 0x80131700 ODSOLE Extended Procedure NULL
快溜 2011-01-05
  • 打赏
  • 举报
回复
你的存储过程有错误,跟程序没关系,再说,你程序里也没执行过sql啊。
快溜 2011-01-05
  • 打赏
  • 举报
回复
没看明白你想说什么。
wangying198791 2011-01-05
  • 打赏
  • 举报
回复
高手帮帮忙!

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧