/// <summary>
/// 序列化DataTable
/// </summary>
/// <param name="pDt">包含數據的DataTable</param>
/// <returns>序列化的DataTable</returns>
public static string GetXmlFormatDs(DataSet ds)
{
XmlSerializer ser = new XmlSerializer(ds.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, System.Text.Encoding.Default);
ser.Serialize(writer, ds);
writer.Close();
return System.Text.Encoding.Default.GetString(mem.ToArray());
}
/// <summary>
/// 反序列化DataTable
/// </summary>
/// <param name="ds">序列化的DataTable</param>
/// <returns>DataTable</returns>
public static DataSet GetDsFormatXml(string ds)
{
XmlSerializer mySerializer = new XmlSerializer(typeof(DataSet));
StreamReader mem = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(ds)), System.Text.Encoding.Default);
return (DataSet)mySerializer.Deserialize(mem);
}
public byte[] GetBinaryFormatDataSet(DataSet ds)
{
//創建內存流
MemoryStream memStream = new MemoryStream();
//產生二進制序列化格式
IFormatter formatter = new BinaryFormatter();
//指定DataSet串行化格式是二進制
ds.RemotingFormat = SerializationFormat.Binary;
//串行化到內存中
formatter.Serialize(memStream, ds);
//將DataSet轉化成byte[]
byte[] binaryResult = memStream.ToArray();
//清空和釋放內存流
memStream.Close();
memStream.Dispose();
return binaryResult;
}
/// <summary>
/// DataSet反序列化
/// </summary>
/// <param name="binaryData">需要反序列化的byte[]</param>
/// <returns></returns>
public DataSet GetDataSetFromatBinary(byte[] binaryData)
{
//創建內存流
MemoryStream memStream = new MemoryStream(binaryData);
//產生二進制序列化格式
IFormatter formatter = new BinaryFormatter();
//反串行化到內存中
object obj = formatter.Deserialize(memStream);
//類型檢驗
if (obj is DataSet)
{
DataSet dataSetResult = (DataSet)obj;
return dataSetResult;
}
else
{
return null;
}
}
序列化問題!Datatable
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.