序列化问题!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;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值