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
- Curso de ADO.NET e BDP - Parte I
- Curso de ADO.NET e BDP - Parte II
- Curso de ADO.NET e BDP - Parte III
- Curso de ADO.NET e BDP - Parte IV
- Curso de ADO.NET e BDP - Parte V
- Curso de ADO.NET e BDP - Parte VI
- Curso de ADO.NET e BDP - Parte VII
- Curso de ADO.NET e BDP - Parte VIII
- Curso de ADO.NET e BDP - Parte IX
- Curso de ADO.NET e BDP - Parte XI
- Curso de ADO.NET e BDP - Parte XII
- Curso de ADO.NET e BDP - Parte XIII
- Curso de ADO.NET e BDP - Parte XIV
- Curso de ADO.NET e BDP - Parte XV
- Curso de ADO.NET e BDP - Parte XVI
- Curso de ADO.NET e BDP - Parte XVII
- Curso de ADO.NET e BDP - Parte XVIII
- Curso de ADO.NET e BDP - Parte XIX
- Curso de ADO.NET e BDP - Final