/// <summary>
/// 一、构建模拟数据存放于DataTable
/// </summary>
/// <returns>DataTable</returns>
public DataTable GetData()
{
DataTable dt = new DataTable(); dt.Columns.Add("MemberID", typeof(int));//为新的Datatable添加一个新的列名
dt.Columns.Add("Body", typeof(string));//为新的Datatable添加一个新的列名
dt.Columns.Add("IsSecret", typeof(int));//为新的Datatable添加一个新的列名
dt.Columns.Add("AdminReply", typeof(string));//为新的Datatable添加一个新的列名
dt.Columns.Add("AdminReplyTime", typeof(DateTime));
dt.Columns.Add("CreateTime", typeof(DateTime)); for (int i = ; i < ; i++) //开始循环赋值
{
DataRow row = dt.NewRow(); //创建一个行
row["MemberID"] = ; //从总的Datatable中读取行数据赋值给新的Datatable
row["Body"] = "留言了:" + (i + ).ToString();
row["IsSecret"] = ;
row["AdminReply"] = "回复了:" + (i + ).ToString();
row["AdminReplyTime"] = DateTime.Now;
row["CreateTime"] = DateTime.Now.AddMonths(-);
dt.Rows.Add(row);//添加次行
}
return dt;
}
/// <summary>
/// 二、实例的数据源中的列与该实例的目标表中的列之间的映射
/// </summary>
/// <returns></returns>
public SqlBulkCopyColumnMapping[] GetMapping()
{
SqlBulkCopyColumnMapping[] mapping = new SqlBulkCopyColumnMapping[];
mapping[] = new SqlBulkCopyColumnMapping("MemberID", "MemberID");
mapping[] = new SqlBulkCopyColumnMapping("Body", "Body");
mapping[] = new SqlBulkCopyColumnMapping("IsSecret", "IsSecret");
mapping[] = new SqlBulkCopyColumnMapping("AdminReply", "AdminReply");
mapping[] = new SqlBulkCopyColumnMapping("AdminReplyTime", "AdminReplyTime");
mapping[] = new SqlBulkCopyColumnMapping("CreateTime", "CreateTime");
return mapping;
} /// <summary>
/// DataTable批量添加(有事务)
/// </summary>
/// <param name="Table">数据源DataTable</param>
/// <param name="DestinationTableName">目标表即需要插入数据的数据表名称如"Message"</param>
public bool MySqlBulkCopy(DataTable Table, string DestinationTableName)
{
bool Bool = true;
using (SqlConnection con = new SqlConnection(DbHelperSQL.connectionString))
{
con.Open();
using (SqlTransaction Tran = con.BeginTransaction())//应用事物
{
using (SqlBulkCopy Copy = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity, Tran))
{
Copy.DestinationTableName = DestinationTableName;//指定目标表
SqlBulkCopyColumnMapping[] Mapping = GetMapping();//获取映射关系
if (Mapping != null)
{
//如果有数据
foreach (SqlBulkCopyColumnMapping Map in Mapping)
{
Copy.ColumnMappings.Add(Map);
}
}
try
{
Copy.WriteToServer(Table);//批量添加
Tran.Commit();//提交事务
}
catch
{
Tran.Rollback();//回滚事务
Bool = false;
}
}
}
}
return Bool;
} public ActionResult InsertMoreData()
{
MySqlBulkCopy(GetData(), "Message");
return RedirectToAction("Index");
}

基于ASP.NET几十万数据几秒钟就可以导入到数据库中的更多相关文章

  1. Bulk Insert:将文本数据(csv和txt)导入到数据库中

    将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...

  2. c# SqlBulkCopy实现批量从数据集中把数据导入到数据库中

    今天遇到了一个导入类第一次见 SqlBulkCopy 可以实现从一个数据集导入到数据库中的表中 本来想从数据集中一条条遍历insert到库中 有了这个后发现: 只在把表与数据集的列做一下对应关系,再走 ...

  3. 微软BI 之SSIS 系列 - 在 SSIS 中导入 ACCESS 数据库中的数据

    开篇介绍 来自 天善学院 一个学员的问题,如何在 SSIS 中导入 ACCESS 数据表中的数据. 在 SSIS 中导入 ACCESS 数据库数据 ACCESS 实际上是一个轻量级的桌面数据库,直接使 ...

  4. excel数据通过构建sql语句导入到数据库中

    拿到一张excel数据表格,数据格式如下图所示: 2.根据excel数据结果,构建保存excel数据的表结构 CREATE TABLE #tmpExcel(IP VARCHAR(100),IPAddr ...

  5. Java版将EXCEL表数据导入到数据库中

    1.采用第三方控件JXL实现 try { //实例化一个工作簿对象 Workbook workBook=Workbook.getWorkbook(new File("F://qzlx.xls ...

  6. 利用DataSet更改数据,将更改保存到数据库中

    RowState 是 DataRow 很重要的一个属性, 表示 DataRow 当前的状态. RowState 有 Added, Modified, Unchanged, Deleted, Detac ...

  7. sqlserver怎么将excel表的数据导入到数据库中

    在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库, 相当于导入一张表的整个数据. ...

  8. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  9. 解析excel文件并将数据导入到数据库中

    今天领导给安排了一个临时工作,让我将一个excel里面的数据解析后放入数据库中,经过一个下午的努力成功完成,现在将代码献上,希望对大家有所帮助 一.需要导入的jar 1.commons-collect ...

随机推荐

  1. cpu真实核数

    判断依据: 1.具有相同core id的cpu是同一个core的超线程. 2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores. 英文版: 1.Physical id an ...

  2. 用dwz时, 由于粗心产生的一些问题(记录方便自己查阅)

    在打开"添加" 或 "修改" , 用dialog弹出时 , 点击提交的时候, dialog 不能关闭, 也不能刷新 解决办法: 注意form标签, onsubm ...

  3. node升级更新最近稳定版

    今天,又发现一个超级简单的升级Node.js的方法.一行命令搞定,省去了重新编译安装的过程. node有一个模块叫n(这名字可够短的...),是专门用来管理node.js的版本的. 首先安装n模块: ...

  4. Ssm框架常见报错

    错误1: The origin server did not find a current representation for the target resource or is not willi ...

  5. ajax传递数组及后台接收

    ajax传递的是{"items":arr},其中arr=[]; 在后台String[] items=req.getParameterValues("items" ...

  6. 解决Springboot集成ActivitiModel提示输入用户名密码的问题

    一.原因分析 先要知道两点 - SpringBoot会根据引入的Jar包而自动配置相应的功能. - ActivitiModeler中引用了Spring Security的Jar.(是一个安全或者说权限 ...

  7. WSTMart商城系统数据字典

    欢迎来到WSTMart官网  开源多用户商城  QQ交流群: 返回首页|返回首页| 开发手册 | 数据库字典 | 授权查询 | 授权用户登录 | 官方微信扫一扫 x QQ客服 服务热线 020-852 ...

  8. cnblog博客管理

    http://www.cnblogs.com/wc1903036673/                                        12436109 https://www.cnb ...

  9. [Training Video - 4] [Selenium IDE]

    Selenium IDE Training List

  10. 利用NotePad++ 格式化代码(格式标准化) worldsing

    在阅读别人的代码时往往会遇到格式很乱,阅读起来很费劲,如果手动改很容易出错,而且很费时间,这时可以借助一些专业的编辑器来格式化代码,NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快, ...