打印本文 打印本文 关闭窗口 关闭窗口
c#两种方式 dataset 与byte[] 字节的转换
作者:佚名  文章来源:本站原创  点击数1355  更新时间:2012/10/30 8:33:13  文章录入:mintao  责任编辑:mintao
c#两种方式 dataset 与byte[] 字节的转换

以下是代码片段:
sing System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.Xml;
using System.IO;
using System.Text.RegularExpressions;
using System.Data;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

  

        /// <summary>
       /// dataset 转转换byte[] 字节
       /// </summary>
       /// <param name="str"></param>
       public static byte[] DataToByte(DataSet ds)
        {
            byte[] bArrayResult = null;
            ds.RemotingFormat = SerializationFormat.Binary;
            MemoryStream ms = new MemoryStream();
            IFormatter bf = new BinaryFormatter();
            bf.Serialize(ms, ds);
            bArrayResult = ms.ToArray();
            ms.Close();
            ms.Dispose();
            return bArrayResult;
        }
       /// <summary>
       /// byte[] 字节转datasheet
       /// </summary>
       /// <param name="bArrayResult"></param>
       /// <returns></returns>
        public static DataSet ByteToDataset(byte[] bArrayResult)
           {
               DataSet dsResult = new DataSet();
               MemoryStream ms = new MemoryStream(bArrayResult);
               IFormatter bf = new BinaryFormatter();
               object obj = bf.Deserialize(ms);
               dsResult = (DataSet)obj;
               ms.Close();
               ms.Dispose();

           return dsResult;
              
            }
       /// <summary>
       /// 第二种方法转换
       /// </summary>
       /// <param name="ds"></param>
       /// <returns></returns>
       public static 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>
       ///  第二种方法转换
       /// </summary>
       /// <param name="binaryData"></param>
       /// <returns></returns>
        public static DataSet RetrieveDataSet(byte[] binaryData)
        {
              //创建内存流
                MemoryStream memStream = new MemoryStream(binaryData);
                memStream.Seek(0, SeekOrigin.Begin);
                //产生二进制序列化格式
                IFormatter formatter = new BinaryFormatter();
                //反串行化到内存中
                object obj = formatter.Deserialize(memStream);
                //类型检验
                if (obj is DataSet)
                {
                    DataSet dataSetResult = (DataSet)obj;
                    return dataSetResult;
                }
                else
                {
                    return null;
                }
           
        }

打印本文 打印本文 关闭窗口 关闭窗口