请注意,本示例使用 .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 Web 引用。可以从 [Solution Explorer] 窗格中选择它。
用 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(); while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { string columnName = "(" + dr.GetDataTypeName(i) + ")" + dr.GetName(i); if (dr.IsDBNull(i)) { listBox1.Items.Add(columnName + "=(null)"); } else { System.TypeCode typeCode = System.Type.GetTypeCode(dr.GetFieldType(i)); 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; case System.TypeCode.DBNull: listBox1.Items.Add(columnName + "=(null)"); break; default: listBox1.Items.Add(columnName + "=(unsupported)"); break; } } } listBox1.Items.Add(""); } 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=New York (String)Country=USA (String)PostalCode=02192 (String)Phone=6175553985 (String)Status=A (String)SocialSecurityNumber=017349033 (String)Salary=$45,700.00 (DateTime)StartDate=28/08/1984 0:00:00 AM (DateTime)TerminationDate=(null) (DateTime)BirthDate=05/06/1958 0:00:00 AM (Boolean)BenefitHealthInsurance=True (Boolean)BenefitLifeInsurance=True (Boolean)BenefitDayCare=False (String)Sex=F |
Salary 金额已被转换为客户端的货币形式。
将包含空值的值返回为 DBNull。对于只包含日期而不包含时间的值,将指派 00:00:00 或午夜作为时间。
来自 Web 服务器的 XML 响应包括已设置格式的结果集。所有列数据都转换为数据的字符串表示形式。以下结果集说明了结果集在发送给客户端时的格式:
<row> <EmployeeID>102</EmployeeID> <ManagerID>501</ManagerID> <Surname>Whitney</Surname> <GivenName>Fran</GivenName> <DepartmentID>100</DepartmentID> <Street>9 East Washington Street</Street> <City>Cornwall</City> <State>NY</State> <Country>USA</Country> <PostalCode>02192</PostalCode> <Phone>6175553985</Phone> <Status>A</Status> <SocialSecurityNumber>017349033</SocialSecurityNumber> <Salary>45700.000</Salary> <StartDate>1984-08-28-05:00</StartDate> <TerminationDate xsi:nil="true" /> <BirthDate>1958-06-05-05:00</BirthDate> <BenefitHealthInsurance>1</BenefitHealthInsurance> <BenefitLifeInsurance>1</BenefitLifeInsurance> <BenefitDayCare>0</BenefitDayCare> <Sex>F</Sex> </row> |
包含日期或时间信息的列包括有 Web 服务器时间相对 UTC 的偏移。在上面的结果集中,偏移为 -05:00,即比 UTC(北美东部标准时间)时间相差 5 小时。
只含有日期的列的格式为 yyyy-mm-dd-HH:MM
或 yyyy-mm-dd+HH:MM
。将向字符串后添加时区偏移(-HH:MM 或 +HH:MM)后缀。
只含有时间的列的格式为 hh:mm:ss.nnn-HH:MM
或 hh:mm:ss.nnn+HH:MM
。将向字符串后添加时区偏移(-HH:MM 或 +HH:MM)后缀。
同时含有日期和时间的列的格式为 yyyy-mm-ddThh:mm:ss.nnn-HH:MM
或 yyyy-mm-ddThh:mm:ss.nnn+HH:MM
。请注意,使用字母 'T' 分隔日期和时间。将向字符串后添加时区偏移(-HH:MM 或 +HH:MM)后缀。
指定了 DATATYPE ON 子句,以生成 XML 结果集响应中的数据类型信息。来自 Web 服务器的响应片段如下所示。请注意,该类型信息与数据库列的数据类型相匹配。
<xsd:element name='EmployeeID' minOccurs='0' type='xsd:int' /> <xsd:element name='ManagerID' minOccurs='0' type='xsd:int' /> <xsd:element name='Surname' minOccurs='0' type='xsd:string' /> <xsd:element name='GivenName' minOccurs='0' type='xsd:string' /> <xsd:element name='DepartmentID' minOccurs='0' type='xsd:int' /> <xsd:element name='Street' minOccurs='0' type='xsd:string' /> <xsd:element name='City' minOccurs='0' type='xsd:string' /> <xsd:element name='State' minOccurs='0' type='xsd:string' /> <xsd:element name='Country' minOccurs='0' type='xsd:string' /> <xsd:element name='PostalCode' minOccurs='0' type='xsd:string' /> <xsd:element name='Phone' minOccurs='0' type='xsd:string' /> <xsd:element name='Status' minOccurs='0' type='xsd:string' /> <xsd:element name='SocialSecurityNumber' minOccurs='0' type='xsd:string' /> <xsd:element name='Salary' minOccurs='0' type='xsd:decimal' /> <xsd:element name='StartDate' minOccurs='0' type='xsd:date' /> <xsd:element name='TerminationDate' minOccurs='0' type='xsd:date' /> <xsd:element name='BirthDate' minOccurs='0' type='xsd:date' /> <xsd:element name='BenefitHealthInsurance' minOccurs='0' type='xsd:boolean' /> <xsd:element name='BenefitLifeInsurance' minOccurs='0' type='xsd:boolean' /> <xsd:element name='BenefitDayCare' minOccurs='0' type='xsd:boolean' /> <xsd:element name='Sex' minOccurs='0' type='xsd:string' /> |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |