DataTable to byte[]、DataTable to XML(string)
DataTabe 對象在很多地方都會用到,特別是在Web Service、Socket等需網(wǎng)絡(luò)傳輸?shù)牡胤健?/p>
但是在有些地方,如果直接傳遞的話,程序可能會報(bào)告DataTable無法序列化錯(cuò)誤。
解決問題的方法,是對DataTable進(jìn)行序列化。
FCL提供的用于序列化的方法組要有三種:
1.XML Serialization
2.Binary Serialization
3.SOAP Serialization
感興趣的可查下相關(guān)的具體操作文章,如 Introducing Serialization in .NET?、Object Serialization in the .NET Framework等。
--------------------------------------------------
DataTable傳遞的問題各位博友應(yīng)當(dāng)經(jīng)常遇到,下面提供一種實(shí)現(xiàn)。
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前面寫過一篇相關(guān)博文:stream、string、byte[] 互轉(zhuǎn)?,有興趣也可以看下。
-----------------------------------------
3.DataTable to XML(string)
string result; using (StringWriter sw = new StringWriter()) { dataTable.WriteXml(sw); result = sw.ToString(); }關(guān)注datatable的WriteXML?有N個(gè)重載:WriteXml(String)、WriteXml(Stream)等。與之對應(yīng)的還有個(gè)ReadXML,同樣也有N個(gè)重載.
// 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[] 互轉(zhuǎn) 可以實(shí)現(xiàn)DataTable的任意靈活轉(zhuǎn)換。?
--------------------------------------------
經(jīng)DebugLZQ證實(shí):Web service、WCF等均可直接傳遞datatable對象,倒是無法傳遞sqlparameters對象(序列化后可傳遞)。請參見DebugLZQ前面的相關(guān)博文。
由此可見,上述轉(zhuǎn)換(序列化)各位博友 就知道有這么一回事,實(shí)在需要的時(shí)候再翻看看提供個(gè)參考。
-----------------------------------------
希望對你有幫助~
轉(zhuǎn)載于:https://www.cnblogs.com/DebugLZQ/p/3117015.html
總結(jié)
以上是生活随笔為你收集整理的DataTable to byte[]、DataTable to XML(string)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux FAQ(zz)
- 下一篇: JQuery对XML文件的操作