Chinaunix首页 | 论坛 | 博客
  • 博客访问: 735010
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:38:21

  在VS.NET中创建一个名称为PCSWebSrv2的新Web服务项目。首先,在global.asax的Application_Start()处理程序中给项目添加一些代码。把PCSWebApp3.mdb中的所有数据都载入到数据集中并且保存数据集,其中涉及的大部分代码前面已讨论过,因为前面已经把数据库载入到DataSet中。实际上,可以从第25章的PCSWebApp3的WebForm1.aspx.cs中复制需要的所有代码,其中包括InitializeComponent()中的数据库连接字符串(因为您使用的连接字符串有可能不相同,所以这里就不显示了)—— 只有几处需要修改:

  protected void Application_Start(Object sender, EventArgs e)

  {

  System.Data.DataSet ds;

  System.Data.OleDb.OleDbConnection oleDbConnection1;

  System.Data.OleDb.OleDbDataAdapter daAttendees;

  System.Data.OleDb.OleDbDataAdapter daRooms;

  System.Data.OleDb.OleDbDataAdapter daEvents;

  oleDbConnection1 = new System.Data.OleDb.OleDbConnection();

  oleDbConnection1.ConnectionString = @" ... ";

  oleDbConnection1.Open();

  ds = new DataSet();

  daAttendees = new System.Data.OleDb.OleDbDataAdapter(

  "SELECT * FROM Attendees", oleDbConnection1);

  daRooms = new System.Data.OleDb.OleDbDataAdapter(

  "SELECT * FROM Rooms", oleDbConnection1);

  daEvents = new System.Data.OleDb.OleDbDataAdapter(

  "SELECT * FROM Events", oleDbConnection1);

  daAttendees.Fill(ds, "Attendees");

  daRooms.Fill(ds, "Rooms");

  daEvents.Fill(ds, "Events");

  oleDbConnection1.Close();

  Application["ds"] = ds;

  }

  这里需要注意代码中的最后一行。通常,Application(以及Session)对象都有一个名/值对的集合,可以在该集合中保存数据。这里在Application中创建一个名称ds,它从数据库中提取数据集ds的串行化值,其中包含表Attendees、Rooms和Events。这样,Web服务对象的所有实例在任何时间都可以访问ds中保存的值。

  为了能使上面的代码正常执行,也需要给global.asax.cs添加一个对System.data命名空间的引用:

  ...

  using System.Data;

  这项技术非常适合于只读数据,因为多个线程可以访问它,减少了对数据库中数据的载入。但要注意,由于Events表有可能发生变化,在Events表发生变化时,必须更新应用程序层DataSet。稍后会介绍这一内容。

  接下来需要把方法GetData()添加给Service1.asmx.cs中的服务:

  [WebMethod]

  public DataSet GetData()

  {

  return (DataSet) Application["ds"];

  }

[1]    

【责编:Luzi】

--------------------next---------------------

阅读(409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~