• DataTable to byte[]、DataTable to XML(string)


    DataTabe 对象在很多地方都会用到,特别是在Web Service、Socket等需网络传输的地方。

    但是在有些地方,如果直接传递的话,程序可能会报告DataTable无法序列化错误。

    解决问题的方法,是对DataTable进行序列化。

    FCL提供的用于序列化的方法组要有三种:

    1.XML Serialization

    2.Binary Serialization

    3.SOAP Serialization

    感兴趣的可查下相关的具体操作文章,如 Introducing Serialization in .NET Object Serialization in the .NET Framework等。

    --------------------------------------------------

    DataTable传递的问题各位博友应当经常遇到,下面提供一种实现。

    1.DataTable to byte[]

    MemoryStream ms = new MemoryStream();
    BinaryFormatter bf = new BinaryFormatter();
    bf.Serialize(ms, dt);
    byte[] tableBT = ms.ToArray();

    2. byte[] to DataTable (即把上面的byte[]还原)

    BinaryFormatter bf = new BinaryFormatter();
    MemoryStream ms = new MemoryStream(tableBT);
    DataTable dt = bf.Deserialize(ms) as DataTable;

    -----------------------------------------

    DebugLZQ前面写过一篇相关博文:stream、string、byte[] 互转 ,有兴趣也可以看下。

    -----------------------------------------

    3.DataTable to XML(string)

    string result;
    using (StringWriter sw = new StringWriter()) {
    dataTable.WriteXml(sw);
    result = sw.ToString();
    }

    关注datatable的WriteXML 有N个重载:WriteXml(String)、WriteXml(Stream)等。与之对应的还有个ReadXML,同样也有N个重载.

    // DataTable to Stream.
    System.IO.MemoryStream xmlStream = new System.IO.MemoryStream();
    table.WriteXml(xmlStream, XmlWriteMode.WriteSchema);
    
    // Stream to DataTable.
    xmlStream.Position = 0;
    
    DataTable newTable = new DataTable();
    newTable.ReadXml(xmlStream);

    以上这些加上stream、string、byte[] 互转 可以实现DataTable的任意灵活转换。 

    --------------------------------------------

    经DebugLZQ证实:Web service、WCF等均可直接传递datatable对象,倒是无法传递sqlparameters对象(序列化后可传递)。请参见DebugLZQ前面的相关博文。

    由此可见,上述转换(序列化)各位博友 就知道有这么一回事,实在需要的时候再翻看看提供个参考。

    -----------------------------------------

    希望对你有帮助~

  • 相关阅读:
    2020年7月3日 查找算法 代码
    QList 和QStringList为空 at()的错误
    网络编程TCP
    02#2位带操作
    04#认识指针
    03#指针内存图//拓展大小端序
    02#循环控制+分支控制+goto标签//拓展3目运算符和逗号运算符
    01#c语言基础内容
    输入的竖线变横
    Keil打包工程
  • 原文地址:https://www.cnblogs.com/DebugLZQ/p/3117015.html
Copyright © 2020-2023  润新知