1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Deserializing Data pptx

3 313 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Deserializing Data
Tác giả Team LiB
Thể loại Recipe
Định dạng
Số trang 3
Dung lượng 13,46 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

[ Team LiB ]Recipe 5.5 Deserializing Data Problem You have a DataSet that has been serialized and written to a file.. You want to recreate the DataSet from this file.. Solution Use th

Trang 1

[ Team LiB ]

Recipe 5.5 Deserializing Data

Problem

You have a DataSet that has been serialized and written to a file You want to recreate the DataSet from this file

Solution

Use the serializer object's Deserialize( ) method and cast the result as a DataSet

The sample code loads a file stream containing a previously serialized DataSet in a

specified format and deserializes it to recreate the original DataSet

The C# code is shown in Example 5-5

Example 5-5 File: DeserializeForm.cs

// Namespaces, variables, and constants

using System;

using System.Windows.Forms;

using System.IO;

using System.Data;

using System.Runtime.Serialization;

using System.Runtime.Serialization.Formatters;

using System.Runtime.Serialization.Formatters.Binary;

using System.Runtime.Serialization.Formatters.Soap;

using System.Xml.Serialization;

private OpenFileDialog ofd;

//

private void goButton_Click(object sender, System.EventArgs e)

{

// Create and open the stream for deserializing

Stream stream = null;

try

{

stream = File.Open(fileNameTextBox.Text, FileMode.Open,

FileAccess.Read);

Trang 2

}

catch(Exception ex)

{

MessageBox.Show(ex.Message, "Deserializing Data", MessageBoxButtons.OK, MessageBoxIcon.Error); return;

}

// Deserialize the DataSet from the stream

DataSet ds = null;

try

{

if (xmlReadRadioButton.Checked)

{

ds = new DataSet( );

ds.ReadXml(stream);

}

else if (xmlSerializerRadioButton.Checked)

{

XmlSerializer xs = new XmlSerializer(typeof(DataSet));

ds = (DataSet)xs.Deserialize(stream);

}

else if(soapRadioButton.Checked)

{

SoapFormatter sf = new SoapFormatter( );

ds = (DataSet)sf.Deserialize(stream);

}

else if(binaryRadioButton.Checked)

{

BinaryFormatter bf = new BinaryFormatter( );

ds = (DataSet)bf.Deserialize(stream);

}

}

catch (System.Exception ex)

{

MessageBox.Show(ex.Message, "Deserializing Data", MessageBoxButtons.OK, MessageBoxIcon.Error); return;

}

finally

{

stream.Close( );

}

Trang 3

// Bind the DataSet to the grid

dataGrid.DataSource = ds.DefaultViewManager;

MessageBox.Show("Deserialization complete.", "Deserializing Data",

MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private void fileDialogButton_Click(object sender, System.EventArgs e)

{

// File dialog to save file

if(xmlReadRadioButton.Checked || xmlSerializerRadioButton.Checked)

ofd.Filter = "XML files (*.xml)|*.xml";

else if(soapRadioButton.Checked)

ofd.Filter = "SOAP files (*.soap)|*.soap";

else if(binaryRadioButton.Checked)

ofd.Filter = "Binary files (*.bin)|*.bin";

ofd.Filter += "|All files (*.*)|*.*";

ofd.FilterIndex = 0;

if (ofd.ShowDialog( ) == DialogResult.OK)

fileNameTextBox.Text = ofd.FileName;

}

Discussion

This sample deserializes any of the serialized DataSet objects from Recipe 5.4

The sample allows the user to select a file and specify a serialization type The

appropriate serializing object is created and in the case of the XmlSerializer object, its type is specified in the constructor The Deserialize( ) method of the serializer object is then used to deserialize the file stream into an object graph This is then cast to a DataSet

to complete the deserialization

See the discussion in Recipe 5.4 for more information about the serialization and the formatter classes that can serialize ADO.NET objects

[ Team LiB ]

Ngày đăng: 14/12/2013, 18:16