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 = ; DataTable newTable = new DataTable();
newTable.ReadXml(xmlStream);
以上这些加上stream、string、byte[] 互转 可以实现DataTable的任意灵活转换。
--------------------------------------------
经DebugLZQ证实:Web service、WCF等均可直接传递datatable对象,倒是无法传递sqlparameters对象(序列化后可传递)。请参见DebugLZQ前面的相关博文。
由此可见,上述转换(序列化)各位博友 就知道有这么一回事,实在需要的时候再翻看看提供个参考。
-----------------------------------------
希望对你有帮助~
DataTable to byte[]、DataTable to XML(string)的更多相关文章
- ASP.NET操作DataTable各种方法总结(给Datatable添加行列、DataTable选择排序等)
using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Gz ...
- C# 实现DataTable、DataSet与XML互相转换
/**//// <summary> /// 把DataSet.DataTable.DataView格式转换成XML字符串.XML文件 /// </summary> public ...
- List实体类、DataTable与xml互转
序列化常用Attribute讲解说明 [XmlRootAttribute("MyCity", Namespace="abc.abc", IsNullable=f ...
- .NET(C#)中的DataSet、string、DataTable等对象转换成Json
ConvertJson.cs类 using System; using System.Collections.Generic; using System.Text; using System.Data ...
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- (C#)中的DataSet、string、DataTable等对象转换成Json
ConvertJson.cs类 using System; using System.Collections.Generic; using System.Text; using System.Data ...
- .NET DataSet、DataTable操作记录
一直在习惯.net的编程思维,或是说C#吧.因为前几年一直在用PHP做站,现在用.net很不习惯,主要C#都依赖对控件.类的熟悉,不然很多功能都实现不了. 需求 最近做了一功能,从SQL Server ...
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...
- 使用JavaScriptSerializer序列化集合、字典、数组、DataTable为JSON字符串 分类: 前端 数据格式 JSON 2014-10-30 14:08 169人阅读 评论(0) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
随机推荐
- JavaScript中设置元素class的三种方法小结
第一.element.setAttribute('class','abc'); 第二.element.setAttribute('className', 'abc') : 第三.element.cl ...
- 编解码-java序列化
大多数Java程序员接触到的第一种序列化或者编解码技术就是Java的默认序列化,只需要序列化的POJO对象实现java.io.Serializable接口,根据实际情况生成序列ID,这个类就能够通过j ...
- Uva 524 Prime Ring
如果用全排列生成之后,在判断是否是素数环是会超时的,应该用回溯. 回溯的时候 首先要注意 递归边界 ,结束的时候别忘记判断最后一个和第一个元素能否成立 还有要记得vis的使用和递归之后的清理. # ...
- js运动框架tween
<!DOCTYPE html> <html> <head> <title>myAnimate</title> <style> * ...
- windows安装python问题
在安装python过程中,直接下一步,安装好了,配置环境变量的时候如果找不到安装路径在哪,打开开始菜单,在左边的程序栏找到: 这样就找到了,然后在系统变量中加入即可.如果找不到的话,以联想电脑为例一般 ...
- HTML5属性运用
HTML5 接触移动端,或专注于支持HTML5浏览器进行前端开发的工作者都不会陌生,这个已经普及很广,对于我专注于PC端开发的人来说,觉得陌生但又觉得很熟悉,大家都知道做PC前端开发为了兼容IE老版本 ...
- AngularJS内置指令
指令,我将其理解为AngularJS操作HTML element的一种途径. 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生. 这篇日志简单 ...
- 424 - Integer Inquiry
Integer Inquiry One of the first users of BIT's new supercomputer was Chip Diller. He extended his ...
- cdoj 1328 卿学姐与诡异村庄 Label:并查集 || 二分图染色
卿学姐与诡异村庄 Time Limit: 4500/1500MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...
- UIButton在Disabled状态下标题混乱的问题
最近开发中遇到的问题汇总 有段时间没有归纳开发中遇到的一些问题了,今天就写一下之前开发中遇到的几个问题.希望这 篇文章能让读者在以后的开发中少走弯路.本文将依次介绍<UIButton在Disab ...