web service类型问题

江南小鱼 2009-12-30 05:52:46
1、第三方用VB6.0调用我的webservice(C#写的),VB6.0调用webservice时提供RecordSet;

ADODB.Recordset(在.net下的adodb命名空间下)是接口类型,而webservice参数(输入/返回)类型不支持不可序列化的类型。
请问这种情况怎么处理?哪位给点思路!谢谢!

如果webservice中方法接收ADODB.Recordset类型参数

[WebMethod]
public DataSet SetRecordSetInfo(ADODB.Recordset rs)
{
//do something transform ado recordset to ado.net dataset

}
IE访问webservice报错
无法序列化接口 ADODB.Recordset。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NotSupportedException: 无法序列化接口 ADODB.Recordset。

2、ado Recordset和ado.net dataset之间怎么相互转换?也就是说ado Recordset数据怎么转换为ado.net dataset中的数据。
...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
horris 2009-12-31
  • 打赏
  • 举报
回复
从ADO 2.5起,Recordset对象完全支持Persistance到XML格式,但是这依赖于Microst XML Parser,也就是msxml.dll,它从IE5开始提供。Recordset对象还可以Persistance到任何实现了IStream接口的对象,并且ADO 2.5还提供了Stream对象。因此,ADO 2.5的Recordset可以直接Persistance到IIS5(Windows 2000绑定)的ASP Response/Request对象,以及XML格式的文件或流。
一般你的机器要是XP的话,都是ADO2.5以上了。而且装了.net后,就是ADO2.8了。
你可以使用Recordset.Save方法,将记录集存为XML文件(不必是文件,可以是内存中的XML),然后将此XML传给Web Service。在Web Service端,再用Recordset.Open将XML还原成Recordset的记录集,后面的事情不就好办了吗?
具体将Recordset记录集序列化和反序列化XML的方法,请看MSDN中关于ADO的帮助。
江南小鱼 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kensouterry 的回复:]
是啊  你得去查DataSet映射到VB6里面,是怎么表示的啊!?
[/Quote]
ado Recordset对象应该和ado.net DataSet对象对应吧
Recordset是非类型的,意思是它把每个数据作为variant变量来存储。然而,DataSet是强类型的,它把数据按照原来的类型存储。强类型意味着更规范的编程方式和减少错误。

DataSet是基于xml的,提供查询、排序等,支持各种数据源..
而Recordset数据与数据源有关
江南小鱼 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kensouterry 的回复:]
或者VB6传入的数据在dotnet里面是怎么表示的啊?
[/Quote]
vb6.0不熟,但是我知道vb6.0中数据库编程用的是Recordset,.net中adodb命名空间下也有adodb.Recordset接口..
江南小鱼 2009-12-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 linux7985 的回复:]
把RecordSet转化成可序列化的类,比如自定义的类
[/Quote]
具体指教一下..
有这个想法,昨天也付诸实施,但是失败告终..
牛人详细指点一下^_^
烈火蜓蜻 2009-12-31
  • 打赏
  • 举报
回复
把RecordSet转化成可序列化的类,比如自定义的类
江南小鱼 2009-12-31
  • 打赏
  • 举报
回复
自己顶
kensouterry 2009-12-30
  • 打赏
  • 举报
回复
或者VB6传入的数据在dotnet里面是怎么表示的啊?
kensouterry 2009-12-30
  • 打赏
  • 举报
回复
是啊 你得去查DataSet映射到VB6里面,是怎么表示的啊!?
江南小鱼 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kensouterry 的回复:]
这个你得去查vb6的说明书了,还用vb6啊?
[/Quote]
我们的客户使用vb6.0,调用我的webservice,提供Recordset。
kensouterry 2009-12-30
  • 打赏
  • 举报
回复
这个你得去查vb6的说明书了,还用vb6啊?

110,536

社区成员

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

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

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