好久没写东西了,这几个月也没下功夫钻研技术,愧疚啊。说下最近刚学会的DataTable 的用法吧,新手适合看下。

1 DataTable 获取列名  

在处理数据的时候大家都会用到模型,从datatable遍历数据的时候可以用datatable的columns属性获取列名,然后就可以动态的用datatable

生成一个josn字符串,然后再讲json字符串转化成你想要的model,是不是很方便?。

下面是将datatable转化为json数组的方法。

  private string DataTableToModel(DataTable dt)
        {
            var jsonStr = "";
            if (dt.Rows.Count > 0)
            {
                jsonStr = "[";
                foreach (DataRow row in dt.Rows)
                {
                    jsonStr += "{";
                    foreach (DataColumn item in dt.Columns)
                    {
                        var type = item.DataType;//还可以获取列的数据类型
                        if (item.DataType.Equals (System.Type.GetType ("System.DateTime")))
                        {
                            Convert.ToDateTime (row[item.ToString ()]).ToString ("yyyy-MM-dd HH:mm:ss").Trim ();
                        }
                        else
                        {
                            jsonStr += "\"" + item.ToString () + "\":\"" + row[item.ToString ()].ToString () + "\",";
                        }
                    }
                    jsonStr += "},";
                }
                jsonStr = jsonStr.TrimEnd (',') + "]";
            }
            return jsonStr;
        }

这样你就不必每次手动指定列名了,而且这个方法通用性也很强的,所有的从datatable里读取数据的地方都可以调用这个方法。

使用DataTable批量更新数据

因为要做Excel导入,用到了datatable批量插入,这个方法无疑是最快最省事的。

SqlBulkCopy bcp= new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction);
sqlbulkcopy.DestinationTableName = "Table_1";//数据库中的表名 bcp.ColumnMappings("ColumnName","TargetColumnName");//当前数据中和目标表之间的对应列 如果全部对应的话可以不用设置此属性 sqlbulkcopy.WriteToServer(dataset.Tables[]);

ok,先分享这么多,如有不足之处还望各位能不吝赐教。

DataTable 获取列名 DataTable批量更新至数据库的更多相关文章

  1. 一个简单的批量更新oracle 数据库中 最近的服务商名称的数据

    有一个需求是这样的,我们需要更新数据库中的数据,数据时这样的 1.大约50万以上 2. 数据中有较多的重复数据 3. 需要将表中最近的代理商的名称赋值给行中的服务商名称 4. 代理商的名称可能有多个, ...

  2. sql批量更新关系型数据库

    更改gb_groupd里的chargingrulesname的值UPDATE   tb_group SET tb_group.chargingrulesname =tb_chargingrules.c ...

  3. SqlDataAdapter 批量更新数据库表

    在数据库中批量插入数据许多人都已经了解了,就是使用.net 中的SqlBulkCopy对象(MSDN详解).我们在做评教系统的时候使用过这个对象,它能将数据表批量导入到数据库中,效率比单条插入数据效率 ...

  4. winform批量更新数据_长时间的执行会导致界面卡死

    前言:使用winform触发一个事件后执行的代码,如果耗时非常长,则会导致窗口界面假死!  本人最近通过winform窗体执行一项:需要批量更新一批数据库的数据的操作的任务时,由于数据量达到百万级别, ...

  5. DataTable 批量插入SqlServer数据库 使用:SqlBulkCopy

    简单使用: private void UpdateTitle(DataTable dt) { ) { using (SqlBulkCopy sbc = new SqlBulkCopy(SqlHelpe ...

  6. 批量插入数据, 将DataTable里的数据批量写入数据库的方法

    大量数据导入操作, 也就是直接将DataTable里的内容写入到数据库 通用方法: 拼接Insert语句, 好土鳖 1. MS Sql Server:   使用SqlBulkCopy 2. MySql ...

  7. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

  8. C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)

      /*_____________________ List<T>类型数据 To Sql_______________________________*/ /// <summary& ...

  9. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

随机推荐

  1. MediaElement视频控制:播放、暂停、停止、后退、快进、跳转、音量

    /* =================================================  * Author:     Micro  * Date:       2016=03-25 ...

  2. 解决linux下主机名变bogon的问题

    早上起来发现 linux主机名变为bogon bogon是指那些不该出现在internet路由表中的地址吧这些地址应该包括:1,私有地址如10,172.16-32,192.168.....2,还未正式 ...

  3. SQLSERVER建立MYSQL连接服务器

    1. 在SQL SERVER端安装MYSQL的ODBC驱动 2. 在ODBC数据源添加MYSQL(控制面板\所有控制面板项\管理工具) 在用户DSN 和系统DSN添加配置驱动程序 注:字符集一定要和M ...

  4. (笔记)Linux内核学习(九)之内核内存管理方式

    一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...

  5. Android使用BLE(低功耗蓝牙,Bluetooth Low Energy)

    背景 在学习BLE的过程中,积累了一些心得的DEMO,放到Github,形成本文.感兴趣的同学可以下载到源代码. github: https://github.com/vir56k/bluetooth ...

  6. Android Studio开发JNI工程

    转:http://www.2cto.com/kf/201412/361768.html 使用Android Sutdio创建一个新的工程后,接下来记录创建NDK工程的基本步骤. 本文将达到: 1. 创 ...

  7. Spark源码系列(二)RDD详解

    1.什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD.简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据. RDD的全名是Resilient Di ...

  8. OpenGL cubeMap

    glsl 的reflect(I,N)其中I是 眼睛(camera)位置到顶点位置的方向向量,N为顶点法线,必须要归一化 橙宝书里给出的计算过程是这样的:reflect(I,N) = I - 2 *do ...

  9. Selenium自动化测试项目案例实践公开课

    Selenium自动化测试项目案例实践公开课: http://gdtesting.cn/news.php?id=55

  10. osgi:设置httpservice端口号

    使用osgi开发http类的Service,在启动时默认端口是80.但有可能这个端口已经被本机上的其他程序占用.那么解决问题的方法有两种:1)关闭或修改占用程序的端口: 2)修改osgi启动时的端口. ...