——此文章摘自《C#高级编程(第
版)》定价
元 特价
元 购买
在VSNET中创建一个名称为PCSWebSrv的新Web服务项目首先在globalasax的Application_Start()处理程序中给项目添加一些代码把PCSWebAppmdb中的所有数据都载入到数据集中并且保存数据集其中涉及的大部分代码前面已讨论过因为前面已经把数据库载入到DataSet中实际上可以从第章的PCSWebApp的WebFormaspxcs中复制需要的所有代码其中包括InitializeComponent()中的数据库连接字符串(因为您使用的连接字符串有可能不相同所以这里就不显示了)—— 只有几处需要修改
protected void Application_Start(Object sender EventArgs e)
{
SystemDataDataSet ds;
SystemDataOleDbOleDbConnection oleDbConnection;
SystemDataOleDbOleDbDataAdapter daAttendees;
SystemDataOleDbOleDbDataAdapter daRooms;
SystemDataOleDbOleDbDataAdapter daEvents;
oleDbConnection = new SystemDataOleDbOleDbConnection();
oleDbConnectionConnectionString = @ ;
oleDbConnectionOpen();
ds = new DataSet();
daAttendees = new SystemDataOleDbOleDbDataAdapter(
SELECT * FROM Attendees oleDbConnection);
daRooms = new SystemDataOleDbOleDbDataAdapter(
SELECT * FROM Rooms oleDbConnection);
daEvents = new SystemDataOleDbOleDbDataAdapter(
SELECT * FROM Events oleDbConnection);
daAttendeesFill(ds Attendees);
daRoomsFill(ds Rooms);
daEventsFill(ds Events);
oleDbConnectionClose();
Application[ds] = ds;
}
这里需要注意代码中的最后一行通常Application(以及Session)对象都有一个名/值对的集合可以在该集合中保存数据这里在Application存储中创建一个名称ds它从数据库中提取数据集ds的串行化值其中包含表AttendeesRooms和Events这样Web服务对象的所有实例在任何时间都可以访问ds中保存的值
为了能使上面的代码正常执行也需要给globalasaxcs添加一个对Systemdata命名空间的引用
using SystemData;
这项技术非常适合于只读数据因为多个线程可以访问它减少了对数据库中数据的载入但要注意由于Events表有可能发生变化在Events表发生变化时必须更新应用程序层DataSet稍后会介绍这一内容
接下来需要把方法GetData()添加给Serviceasmxcs中的服务
[WebMethod]
public DataSet GetData()
{
return (DataSet) Application[ds];
}
[] [] []