310143 HOW TO:使用 ADO.NET 和 Visual C# .NET 通过 Web 服务更新服务器数据 (From MSDN)

本文的发布号曾为 CHS310143
有关本文的 Microsoft Visual Basic .NET 版本,请参见 308056
有关本文的 Microsoft Visual J# .NET 版本,请参见 320634

本文引用下面的 Microsoft .NET 框架类库名称空间:
  • System.Data.SqlClient

本任务的内容

概要

本分步指南演示如何使用 DataSet 对象通过 Web 服务接收并更新数据库数据。本文还演示如何在客户端应用程序中引用 Web 服务并在 DataGrid 控件中显示返回的 DataSet,以便您可以更新数据并将更新发回到服务器。

备注:对于单个表中的更新,您只能使用本文中的方法。

返回页首

要求

下面的列表列出了推荐使用的硬件、软件、网络结构以及所需的 Service Pack:
  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server 或 Windows NT 4.0 Server
  • Microsoft Visual Studio .NET
本文假定您熟悉下列主题:
  • Visual Studio .NET
  • ADO.NET 基础知识和语法
  • ASP.NET 基础知识和语法
本文中的代码示例使用 http://localhost 作为 Web 服务器。另外,代码示例使用的是 罗斯文数据库。 罗斯文数据库包含在 Microsoft SQL Server 中。

返回页首

创建 Web 服务

  1. 启动 Visual Studio .NET。
  2. 按照下列步骤新建一个 Visual C# ASP.NET Web 服务项目:
    1. 文件菜单上,指向新建,然后单击项目
    2. 新建项目对话框中,单击项目类型下面的 Visual C# 项目,然后单击模板下面的 ASP.NET Web 服务
    3. 位置框中,键入服务器和项目名称 csUpdateData 的 URL(例如,http://localhost/csUpdateData)。URL 的 http://localhost 部分在本地 Web 服务器上运行 Web 服务。单击确定
  3. Service1.asmx.cs[Design] 选项卡,右键单击该页,然后单击查看代码切换到"代码"视图。将出现 Web 服务的"代码"窗口。
  4. 将下面的 using 语句添加到代码窗口的顶部:
    //Use data access objects from the SqlClient namespace.
    using System.Data.SqlClient;
  5. 在下列代码之后
    public Service1()
            {
    //CODEGEN:This call is required by the ASP.NET Web Services Designer
    InitializeComponent();
            }
    添加以下代码:
    [WebMethod]
    public DataSet GetCustomers()
           {
    SqlConnection con = new SqlConnection("server=servername;uid=login;
    pwd=password;database=northwind");
    SqlDataAdapter daCust = new SqlDataAdapter("Select * From Customers", con);
    DataSet ds = new DataSet();
    daCust.Fill(ds, "Cust");
    return ds;
           }
    
    [WebMethod]
    public DataSet UpdateCustomers(DataSet ds)
           {
    SqlConnection con = new SqlConnection("server=servername;uid=login;
    pwd=password;database=northwind");
    SqlDataAdapter daCust = new SqlDataAdapter("Select * From Customers", con);
    SqlCommandBuilder cbCust = new SqlCommandBuilder(daCust);
    daCust.Update(ds, "Cust");
    return ds;
            }
  6. 修改 SqlConnection 字符串以正确连接到正在运行 SQL Server 的计算机。
返回页首

测试 Web 服务

  1. 按 F5 键编译并运行 Web 服务。将显示一个 Web 页,它允许您在 Microsoft Internet Explorer 中与 Web 服务进行交互。

    注意返回页的 URL 是 http://localhost/csUpdateData/Service1.asmx。
  2. Service1 Web 页上,单击 GetCustomers。您会看到一个 Web 页,它包括有关 GetCustomers Web 方法的详细信息。
  3. 关闭 Web 页。
返回页首

创建客户端应用程序

  1. 在 Visual Studio .NET,新建一个 Visual C# Windows 应用程序项目。默认将 Form1 添加到该项目中。
  2. 将两个 Button 控件和一个 DataGrid 控件添加到 Form1。Button1Button2 DataGrid1 被默认添加到项目中。
  3. Button1 Text 属性更改为 Load,然后将 Button2 Text 属性更改为 Save
  4. 项目菜单中,单击添加 Web 引用。键入您的 Web 服务的 URL(例如,键入 http://localhost/csUpdateData/Service1.asmx ),按 ENTER 键,然后单击添加引用。新近添加的 Web 引用条目出现在解决方案资源管理器的视图菜单中。
  5. 在 Visual C# 项目中,打开 Button1 的代码窗口。将以下代码添加到 Button1_Click (Load) 事件过程中:
    localhost.Service1 MyService = new localhost.Service1();
    dataGrid1.DataSource = MyService.GetCustomers();
    dataGrid1.DataMember = "Cust";
  6. 切换到窗体视图。
  7. 打开 Button2 的代码窗口。将以下代码添加到 Button2_Click (Save) 事件过程中:
    localhost.Service1 MyService = new localhost.Service1();
    DataSet ds = (DataSet) dataGrid1.DataSource;
    DataSet dsChanges = ds.GetChanges();
    if (dsChanges != null)
            {
    ds.Merge(MyService.UpdateCustomers(dsChanges), true);
            }
返回页首

测试客户端应用程序

  1. 按 F5 键编译并运行客户端应用程序。
  2. 请注意,最初 DataGrid1 是空的。单击 Load。注意 DataGrid1 现在显示顾客记录。
  3. DataGrid1 中,修改一些数据,然后单击 Save

    备注:不要更改关键字段。如果更改了关键字段,将收到错误消息,表明您破坏了服务器上的引用完整性。
返回页首

参考

有关其他信息,请参见 Visual Studio .NET 帮助文档中的"创建和访问 Web 服务演练"主题。

返回页首

这篇文章中的信息适用于:

  • Microsoft ADO.NET(随 .NET 框架一起提供)
  • Microsoft Visual C# .NET (2002)
最近更新:2002-6-18 (1.0)
关键字kbDSupport kbhowto kbHOWTOmaster kbSqlClient kbSystemData KB310143
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值