Compartilhar via


Seção de dados

A seção de dados define os dados do conjunto de linhas com as atualizações, as inserções ou as exclusões pendentes. A seção de dados pode conter zero ou mais linhas. Ela só pode conter dados de um conjunto de linhas em que a linha é definida pelo esquema. Além disso, conforme já observado, as colunas sem dados podem ser omitidas. Se um atributo ou um subelemento for usado na seção de dados e esse constructo não tiver sido definido na seção de esquema, ele será ignorado silenciosamente.

String

Os caracteres XML reservados em dados de texto precisam ser substituídos por entidades de caracteres apropriadas. Por exemplo, no nome da empresa "Joe's Garage", a aspa única precisa ser substituída por uma entidade. A linha real será semelhante à seguinte:

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

Os seguintes caracteres são reservados em XML e precisam ser substituídos por entidades de caracteres: {',",&,<,>}.

Binário

Os dados binários são codificados em bin.hex (ou seja, um byte é mapeado para dois caracteres, um caractere por nibble).

DateTime

O formato VT_DATE variante não é compatível diretamente com os tipos de dados XML-Data. O formato correto para datas com um componente de dados e hora é yyyyy-mm-ddThh:mm:ss.

Para obter mais informações sobre os formatos de data especificados por XML, confira a especificação W3C XML-Data.

Quando a especificação XML-Data definir dois tipos de dados equivalentes (por exemplo, i4 == int), o ADO gravará o nome amigável, mas fará a leitura em ambos.

Como gerenciar as alterações pendentes

Um Recordset pode ser aberto no modo de atualização imediata ou em lote. Quando elas são abertas no modo de atualização em lote com cursores do lado do cliente, todas as alterações feitas no Recordset ficam no estado pendente até que o método UpdateBatch seja chamado. As alterações pendentes também são persistentes quando o Recordset é salvo. Em XML, elas são representadas pelo uso dos elementos de "atualização" definidos em urn:schemas-microsoft-com:rowset. Além disso, se um conjunto de linhas puder ser atualizado, a propriedade atualizável precisará ser definida como true na definição da linha. Por exemplo, para definir que a tabela Shippers contém alterações pendentes, a definição de linha será semelhante à mostrada a seguir.

<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>  

Isso instrui o Provedor de Persistência a exibir os dados para que o ADO possa construir um objeto Recordset atualizável.

Os dados de exemplo a seguir mostram como as inserções, as alterações e as exclusões são exibidas no arquivo persistente.

<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>  

Uma atualização sempre contém todos os dados de linha originais seguidos dos dados de linha alterados. A linha alterada pode conter todas as colunas ou apenas as colunas que realmente foram alteradas. No exemplo anterior, a linha do Shipper 2 não foi alterada e somente a coluna Phone alterou os valores do Shipper 3 e, portanto, é a única coluna incluída na linha alterada. As linhas inseridas para Shippers 12, 13 e 14 são agrupadas em lote em uma marca rs:insert. Observe que as linhas excluídas também podem ser agrupadas em lote, embora isso não seja mostrado no exemplo anterior.

Confira também

Persistência de registros em formato XML