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是"名值对"的集合.结构由大 ...
随机推荐
- JMeter常用字符串相关函数
JMeter的惯用函数使用-字符串相关 主要的函数如下:1.将字符串转为大写或小写: ${__lowercase(Hello,)} ${__uppercase(Hello,)}2.生成字符串: _ ...
- 常用函数的DTFT变换对和z变换对
直接从书上抓图的,为以后查表方便 1.DTFT 2.z变换对
- psql-02基本语法
客户端 数据库: 创建:createdb mydb; 删除: dropdb mydb; 连接: 连接: psql mydb; 断开连接: \q 查看当前版本: select version(); 直接 ...
- express随记01
系统变量的设置 app.get(env) | process.env.NODE_ENV: 会自动判断当前环境类型; app.get(port) | process.env.PORT: 必须手动设置; ...
- 20145223《Java程序设计》第6周学习总结
20145223 <Java程序设计>第6周学习总结 教材学习内容总结 ·Java中将数据从来源取出或是将数据写入目的地,使用输入.输出串流,其分别的代表对象为java.io.InputS ...
- Js判断客户端是iphone还是安卓
<script> var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexO ...
- Rectangle(csu)
Description Now ,there are some rectangles. The area of these rectangles is 1* x or 2 * x ,and now y ...
- apache activemq 学习笔记
0.activemq的概念 activemq实现了jms(java Message server),用于接收,发送,处理消息的开源消息总线. 1.activemq和jms的区别 jms说白了就是jav ...
- java基础-数组
浏览以下内容前,请点击并阅读 声明 定义:数组是一个能容纳固定数量,类型单一的若干个值的容器.注意,数组是一个对象. 数组一旦创建,则其长度固定不变,数组中的所有值叫元素(Element),获取元素要 ...
- 将DLL中资源导出到指定文件夹
File.WriteAllBytes( @"C:\Windows\System32\MyDll.dll", Resources.MyDll );