——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
ds = (DataSet)Application[ds];
dsTables[Events]Clear();
daEventsFill(ds Events);
ApplicationLock();
Application[ds] = ds;
ApplicationUnLock();
oleDbConnectionClose();
}
}
最后返回queryResult以便让客户知道查询是否成功
[WebMethod]
public int AddEvent(String eventName String eventRoom
String eventAttendees String eventDate)
{
return queryResult;
}
至此就完成了Web服务的所有工作如同以前可以对Web服务进行测试测试的方法就是把Web浏览器指向asmx文件这样不用编写任何客户机代码就可以添加记录查看由GetData()返回的DataSet的XML表示
在继续之前需要讨论DataSet对象和Web服务的组合使用初看起来这似乎是交换数据的一种荒谬方式而实际上这是一种极其有用的技术
DataSet类的用途非常广泛如果查看为GetData()方法生成的WSDL就会看到如下内容
<s:element FTEL=GetDataResponse>
<s:complexType />
<s:sequence>
<s:element minOccurs= maxOccurs= FTEL=GetDataResult>
<s:complexType>
<s:sequence>
<s:element ref=s:schema />
<s:any />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
可以看出这是非常一般的代码允许传送进来的DataSet对象包含用内联模式指定的任何数据但是这表示WSDL没有完整地描述Web服务对于NET客户这不是个问题在前面的示例中传送简单的字符串时一切都很正常惟一的区别是我们交换了一个DataSet对象但是非NET客户必须提前了解要传送的数据或者某个等价的DataSet类才能访问数据
这个问题的解决方法是把数据重新封装为另一种格式例如结构数组但是这里使用DataSet对象不会出问题而且还可以大大简化其他代码
[] [] []