数据部分

数据部分定义行集的数据以及任何挂起的更新、插入或删除。 数据部分可以包含零行或多行。 数据部分只能包含来自一个行集中的数据,并且行集中的行由架构定义。 此外,如前所述,可以省略没有任何数据的列。 如果在数据部分中使用了属性或子元素,并且该结构尚未在架构部分中定义,则属性或子元素会被静默忽略。

字符串

文本数据中保留的 XML 字符必须替换为适当的字符实体。 例如,在公司名称“Joe's Garage”中,单引号必须替换为实体。 实际行将类似于以下内容:

<z:row CompanyName="Joe's Garage"/>  

以下字符在 XML 中保留,必须用字符实体替换:{',",&,<,>}。

二进制

二进制数据采用 bin.hex 编码(即一个字节映射到两个字符,每个半字节一个字符)。

DateTime

XML-Data 数据类型不直接支持变体 VT_DATE 格式。 具有数据和时间分量的日期的正确格式是 yyyy-mm-ddThh:mm:ss。

有关 XML 指定的日期格式的更多信息,请参阅 W3C XML-Data 规范

当 XML-Data 规范定义了两种等效的数据类型(例如,i4 == int)时,ADO 将写出友好名称,但同时读入两者。

管理挂起的更改

Recordset 可以立即或批量更新模式打开。 当使用客户端游标以批量更新模式打开它们时,对 Recordset 所做的所有更改都处于挂起状态,直到调用 UpdateBatch 方法。 保存 Recordset 时,挂起的更改也会保留。 在 XML 中,它们通过使用 urn:schemas-microsoft-com:rowset 中定义的“update”元素来表示。 此外,如果可以更新行集,则必须在行的定义中将可更新属性设置为 true。 例如,要定义 Shippers 表包含待定更改,行定义如下所示。

<s:ElementType name="row" content="eltOnly" updatable="true">  
  <s:attribute type="ShipperID"/>  
  <s:attribute type="CompanyName"/>  
  <s:attribute type="Phone"/>  
  <s:extends type="rs:rowbase"/>  
</s:ElementType>  

这将命令持久性提供程序显示数据,以便 ADO 可以构造一个可更新的 Recordset 对象。

以下示例数据显示了插入、更改和删除在持久文件中的外观。

<rs:data>  
  <z:row ShipperID="2" CompanyName="United Package"   
    Phone="(503) 555-3199"/>  
<rs:update>  
  <rs:original>  
    <z:row ShipperID="3" CompanyName="Federal Shipping"   
      Phone="(503) 555-9931"/>  
  </rs:original>  
  <z:row Phone="(503) 552-7134"/>  
</rs:update>  
<rs:insert>  
  <z:row ShipperID="12" CompanyName="Lightning Shipping"   
    Phone="(505) 111-2222"/>  
  <z:row ShipperID="13" CompanyName="Thunder Overnight"   
    Phone="(505) 111-2222"/>  
  <z:row ShipperID="14" CompanyName="Blue Angel Air Delivery"   
    Phone="(505) 111-2222"/>  
</rs:insert>  
<rs:delete>  
  <z:row ShipperID="1" CompanyName="Speedy Express" Phone="(503) 555-9831"/>  
</rs:delete>  
</rs:data>  

更新始终包含整个原始行数据,然后是更改后的行数据。 更改的行可能包含所有列或仅包含实际更改的那些列。 在前面的示例中,Shipper 2 的行没有变化,只有 Phone 列更改了 Shipper 3 的值,因此是更改后的行中唯一包含的列。 Shipper 12、13 和 14 的插入行通过一个 rs:insert 标记批量聚合在一起。 请注意,删除的行也可以一起批量聚合在一起,尽管在前面的示例中没有显示。

另请参阅

以 XML 格式保留记录