Curso de ADO.NET e BDP - Parte X

Acesso a dados no Delphi 8 for .NET

 

Parte X– DataSet e XML

O ADO.NET utiliza o formato XML para intercâmbio de dados. Dessa forma, você pode facilmente distribuir DataSets através da Web e utilizar recursos de interoperabilidade, já que XML é independente de plataforma.

No .NET Framework, as classes base para manipulação de documentos XML estão localizadas no namespace System.XML (como XMLNode, XMLElement, XMLDocument etc). A utilização dessas classes é semelhante ao uso do componente XMLDocument no Delphi. Além dessas classes, um DataSet do ADO.NET (assim como um ClientDataSet do Delphi) pode ser totalmente representado em formato XML. Você pode simplesmente chamar seu método WriteXML e passar como parâmetro o nome do arquivo (ou ainda uma string ou uma Stream).

Por padrão, WriteXML exporta somente os dados de um DataSet. Você pode passar com segundo parâmetro de WriteXML a opção XMLWriteMode.WriteSchema para salvar a definição de campos, constraints e relacionamentos usando uma XML Schema (XSD). Para recuperar o conteúdo de um DataSet você utilizará o método ReadXML.

Neste artigo veremos como salvar os dados de um DataSet em um arquivo XML, e como recuperar esse dados.

Configurando os componentes do BDP

Inicie uma nova aplicação do tipo Windows Forms Application. Expanda a conexão Employee no Data Explorer e arraste a tabela Department para o designer. Isso cria um BdpConnection e um BdpDataAdapter. Coloque um DataSet e aponte a propriedade DataSet do BdpDataAdapter para esse componente, e configure seu Active para True.

Coloque também os seguintes componentes: um OpenFileDialog, quatro Buttons, um Label, um CheckBox, um TextBox e um DataGrid. Seu formulário deve estar semelhante ao mostrado a seguir:

 

 

WriteXml e ReadXml

 

Clique de direita sobre o BdpDataAdapter1 e selecione a opção Configure Data Adapter. Na aba DataSet selecione a opção New DataSet:

 

procedure TWinForm.Button3_Click(sender: System.Object; e: System.EventArgs);

begin

  BdpDataAdapter1.Active := True;

  DataGrid1.DataSource := DataTable1;

end;

 

No evento Click do botão WriteXML chamamos o método WriteXML do DataSet, que gravará os dados do BD em formato XML. Se o usuário marcou o Checkbox, gravamos o XML com schema, passando o parâmetro XmlWriteMode.WriteSchema para o método:

 

procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);

begin

if CheckBox1.Checked then

  dataSet1.WriteXml(TextBox1.Text,XmlWriteMode.WriteSchema)

else

  dataSet1.WriteXml(TextBox1.Text,XmlWriteMode.IgnoreSchema);

end;

 

No botão ReadXML carregamos o arquivo XML, que pode ou não usar schema:

 

procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);

begin

dataSet1.Clear;

if CheckBox1.Checked then

  dataSet1.ReadXml(TextBox1.Text,XmlReadMode.ReadSchema)

else

  dataSet1.ReadXml(TextBox1.Text,XmlReadMode.IgnoreSchema);

DataGrid1.DataSource := DataTable1;

end;

 

No evento Click do botão ao lado do textBox abrimos a caixa de diálogo que permite escolher um arquivo a ser carregado:

 

procedure TWinForm.Button5_Click(sender: System.Object; e: System.EventArgs);

begin

  OpenFileDialog1.ShowDialog;

  TextBox1.Text := OpenFileDialog1.FileName;

end;

 

Nota: o método WriteXML do DataSet seria semelhante ao SaveToFile do ClientDataSet do DataSnap, enquanto ReadXML seria semelhante ao LoadFromFile.

Testando

Execute a aplicação e clique no botão Abrir:

Na janela que aparece dê um nome para o relacionamento. Em Parent Table defina qual a tabela mestre e em Child table escolha a tabela detalhe. Em Columns relacione os campos DEPT_NO das duas tabelas, conforme mostrado a seguir:

 

 

A seguir escolha um arquivo clicando no botão ao lado do textBox e clique em WriteXml. Observe que os dados foram salvos para um arquivo XML:

 

 

Resete a aplicação, e ao invés de clicar no botão Abrir (o que traria os dados do BD para o DataSet), carregue o arquivo XML clicando em ReadXml. 

Com isso você pode simular uma aplicação MyBase, que é feito no Delphi usando ClientDataSet. Ou seja, você pode construir aplicações desktop (1 camada) sem conexões a um BD SQL, salvando e lendo dados de arquivos XML locais.

Na próxima parte do curso veremos como o DataSet pode ser representado em formato XML.Até lá!

Download

Você pode fazer download de todos os exemplos deste curso de acesso a dados no Delphi 8 com ADO.NET e BDP a partir do endereço http://cc.borland.com/cc/ccweb.exe/author?authorid=222668

Leia todos artigos da série