DataTable到string   

/// <summary>         /// DataTable 到 string         /// </summary>         /// <param name="dt"></param>         /// <returns></returns>         public static string DataTableToString(DataTable dt)         {             //!@&,#$%,^&*为字段的拼接字符串             //为了防止连接字符串不在DataTable数据中存在,特意将拼接字符串写成特殊的字符!             StringBuilder strData = new StringBuilder();             StringWriter sw = new StringWriter();

//DataTable 的当前数据结构以 XML 架构形式写入指定的流             dt.WriteXmlSchema(sw);             strData.Append(sw.ToString());             sw.Close();             strData.Append("@&@");             for (int i = 0; i < dt.Rows.Count; i++)           //遍历dt的行             {                 DataRow row = dt.Rows[i];                 if (i > 0)                                    //从第二行数据开始,加上行的连接字符串                 {                     strData.Append("#$%");                 }                 for (int j = 0; j < dt.Columns.Count; j++)    //遍历row的列                 { if (j > 0) //从第二个字段开始,加上字段的连接字符串                     {                         strData.Append("^&*");                     }                     strData.Append(Convert.ToString(row[j])); //取数据                 }             }

return strData.ToString();         }

string到DataTable

       /// <summary>         /// string 到 DataTable         /// </summary>         /// <param name="strdata"></param>         /// <returns></returns>         public static DataTable StringToDataTable(string strdata)         {             if (string.IsNullOrEmpty(strdata))             {                 return null;             }             DataTable dt = new DataTable();             string[] strSplit = { "@&@" };             string[] strRow = { "#$%" };    //分解行的字符串             string[] strColumn = { "^&*" }; //分解字段的字符串

string[] strArr = strdata.Split(strSplit, StringSplitOptions.None);             StringReader sr = new StringReader(strArr[0]);             dt.ReadXmlSchema(sr);             sr.Close();

string strTable = strArr[1]; //取表的数据             if (!string.IsNullOrEmpty(strTable))             {                 string[] strRows = strTable.Split(strRow, StringSplitOptions.None); //解析成行的字符串数组                 for (int rowIndex = 0; rowIndex < strRows.Length; rowIndex++)       //行的字符串数组遍历                 {                     string vsRow = strRows[rowIndex]; //取行的字符串                     string[] vsColumns = vsRow.Split(strColumn, StringSplitOptions.None); //解析成字段数组                     dt.Rows.Add(vsColumns);                 }             }             return dt;         }

datatabe 与string的更多相关文章

  1. DataTable to byte[]、DataTable to XML(string)

    DataTabe 对象在很多地方都会用到,特别是在Web Service.Socket等需网络传输的地方. 但是在有些地方,如果直接传递的话,程序可能会报告DataTable无法序列化错误. 解决问题 ...

  2. 透过WinDBG的视角看String

    摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...

  3. JavaScript String对象

    本编主要介绍String 字符串对象. 目录 1. 介绍:阐述 String 对象的说明以及定义方式. 2. 实例属性:介绍 String 对象的实例属性: length. 3. 实例方法:介绍 St ...

  4. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  5. [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密

    string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...

  6. js报错: Uncaught RangeError: Invalid string length

    在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...

  7. c# 字符串连接使用“+”和string.format格式化两种方式

    参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...

  8. 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

    之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...

  9. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

随机推荐

  1. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

  2. 【Python042--魔法方法:算术运算】

    一.算术魔法方法的举例 1.加法(__add__)的算术运算调用减法(__sub__)的算术运算,减法(__sub__)的算术运算调用加法(__add__)的算术运算 class New_Init(i ...

  3. 日志统计 尺取法【蓝桥杯2018 C/C++ B组】

    标题:日志统计 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞" ...

  4. tp剩余未验证内容

    new Image(宽度,高度) $(image).attr('src', ...).load(function(){....}) load表示浏览器从服务器下载(装载)对象完成, 这个load方法很 ...

  5. Git 命令收集

    目录 1.清理恢复 2.回滚,reset与revert的区别 3.merge,rebase,cherry-pick区别 4.删除不存在对应远程分支的本地分支 5.git pull,git push 报 ...

  6. 作为非计算机专业的学生,觉得 C 语言远比其他语言易于上手,正常吗?

    作者:invalid s链接:https://www.zhihu.com/question/26659552/answer/615531516来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  7. sql server查看用户权限

    System.ServiceModel.FaultException: Server error. Detail: The EXECUTE permission was denied on the o ...

  8. Sql 获取当前日期没有时分秒

    select convert(varchar(10),getdate(),120) 输出格式:2008-02-27 00:25:13 SELECT CONVERT(char(19), getdate( ...

  9. 题解——洛谷 P2680 NOIP提高组 2015 运输计划

    树上差分加上二分答案 详细题解待填坑 #include <cstdio> #include <algorithm> #include <cstring> using ...

  10. .Net Core 本地化&全球化 实践

    介绍: 所有有关本地化的数据获取,都是从统一的一个资源文件中获取 1.创建虚拟类.资源文件,用于作为本地化数据的获取源 2.Configure localization:支持view.data ann ...