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前面的相關博文。
由此可見,上述轉換(序列化)各位博友 就知道有這么一回事,實在需要的時候再翻看看提供個參考。
-----------------------------------------
希望對你有幫助~
轉載于:https://www.cnblogs.com/DebugLZQ/p/3117015.html
總結
以上是生活随笔為你收集整理的DataTable to byte[]、DataTable to XML(string)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux FAQ(zz)
- 下一篇: 12家国内外之名公司多场面试,微软到谷歌