序列化問題!Datatable


/// <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;
        }
    }

發佈了42 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章