在本课中,您将创建与 Web 服务器通信的 Visual C# 应用程序。
前提条件
本课假设您已经按照第 1 课中说明的方式设置了 Web 服务器。请参见第 1 课:设置用于接收 SOAP 请求和发送 SOAP 响应的 Web 服务器。
完成本课需要最新版本的 Visual Studio。
本课假定您拥有在教程教程:使用 Visual C# 访问 SOAP/DISH Web 服务开头的特权部分中列出的角色和特权。
上下文和注释
本课中包含对 localhost 的引用。如果 Web 客户端与 Web 服务器运行在不同的计算机上,则使用第 1 课中 Web 服务器的主机名或 IP 地址而不是 localhost。
本示例使用 .NET Framework 2.0 中的函数。
启动 Visual Studio。
新建一个 Visual C# Windows 窗体应用程序项目。
将出现一个空的窗体。
向项目添加 Web 引用。
单击 [Project] » [Add Service Reference]。
在 [Add Service Reference] 窗口中,单击 [Advanced]。
在 [Service Reference Settings] 窗口中,单击 [Add Web Reference]。
在 [Add Web Reference] 窗口中的 URL 字段中,键入 http://localhost:8082/demo/SASoapTest_DNET。
单击 [Go](或绿色箭头)。
Visual Studio 列出了 SASoapTest_DNET 服务里可用的 EmployeeList 方法。
单击 [Add Reference]。
Visual Studio 将 localhost 添加到 [Solution Explorer] 窗格的项目 [Web References] 中。
用 Web 客户端应用程序所需的对象填充空窗体。
将 ListBox 和 Button 对象从 [Toolbox] 窗格中拖到窗体上,并更新文本属性,使窗体与下图类似:
编写访问 Web 参考并使用可用方法的过程。
双击 [Employee List] 按钮,然后为按钮的 click 事件添加以下代码:
int sqlCode; listBox1.Items.Clear(); localhost.SASoapTest_DNET proxy = new localhost.SASoapTest_DNET(); DataSet results = proxy.EmployeeList(out sqlCode); DataTableReader dr = results.CreateDataReader(); listBox1.BeginUpdate(); while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { string dataTypeName = dr.GetDataTypeName(i); string dataName = dr.GetName(i); System.Type ftype = dr.GetFieldType(i); System.TypeCode typeCode = System.Type.GetTypeCode(ftype); string columnName = "(" + dataTypeName + ")" + dataName + "="; if (dr.IsDBNull(i)) { listBox1.Items.Add(columnName + "(null)"); } else { switch (typeCode) { case System.TypeCode.Int32: Int32 intValue = dr.GetInt32(i); listBox1.Items.Add(columnName + intValue); break; case System.TypeCode.Decimal: Decimal decValue = dr.GetDecimal(i); listBox1.Items.Add(columnName + decValue.ToString("c")); break; case System.TypeCode.String: string stringValue = dr.GetString(i); listBox1.Items.Add(columnName + stringValue); break; case System.TypeCode.DateTime: DateTime dateValue = dr.GetDateTime(i); listBox1.Items.Add(columnName + dateValue); break; case System.TypeCode.Boolean: Boolean boolValue = dr.GetBoolean(i); listBox1.Items.Add(columnName + boolValue); break; default: listBox1.Items.Add(columnName + "(unsupported)"); break; } } } listBox1.Items.Add(""); } listBox1.EndUpdate(); dr.Close(); |
运行应用程序。
单击 [Debug] » [Start Debugging]。
与 Web 数据库服务器通信。
单击 [Employee List]。
ListBox 对象以 (type)name=value 对形式显示 EmployeeList 结果集。以下输出说明了条目如何在 ListBox 对象上显示:
(Int32)EmployeeID=102 (Int32)ManagerID=501 (String)Surname=Whitney (String)GivenName=Fran (Int32)DepartmentID=100 (String)Street=9 East Washington Street (String)City=Cornwall (String)State=NY (String)Country=USA (String)PostalCode=02192 (String)Phone=6175553985 (String)Status=A (String)SocialSecurityNumber=017349033 (Decimal)Salary=$45,700.00 (DateTime)StartDate=8/28/1984 12:00:00 AM (DateTime)TerminationDate=(null) (DateTime)BirthDate=6/5/1958 12:00:00 AM (Boolean)BenefitHealthInsurance=True (Boolean)BenefitLifeInsurance=True (Boolean)BenefitDayCare=False (String)Sex=F |
Salary 金额已被转换为客户端的货币形式。
对于只包含日期而不包含时间的值,将指派 00:00:00 或午夜作为时间(其显示格式取决于客户端的区域设置)。
使用 DataTableReader.IsDBNull 方法对包含空值的值进行测试。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |