c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

向数据库的一张表中添加数据,可以采用单个添加,即一条数据、一条数据的添加;也可以采用批量导入,依次将好些条数据写入数据库的一张表中。文本借助实例《添加系列信息》讲解一种向数据库批量导入数据的方法。

1.界面设计

观看一下添加系列信息部分的界面设计:

1361426195_3074.gif

本文主要介绍批量导入系列信息的实现,单个添加的实现不在此文讲解之列!

2.框架结构

此项目的实现,我采用简单的三层,看一下项目框架

1361426336_9123.gif

3.批量导入数据的实现

下面逐层介绍每层实现:

3.1 SqlHelper数据库助手类中添加向数据库表导入数据的方法(SqlHelper.cs)

#region 批量导入datatable

///

/// 批量导入datatable

///

/// 数据表

/// 数据表名

/// 列集合

public int InsertTable(DataTable dt, string TabelName, DataColumnCollection dtColum)

{

//打开数据库

GetConn();

try

{

//声明SqlBulkCopy ,using释放非托管资源

using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn))

{

//一次批量的插入的数据量

//sqlBC.BatchSize = 1000;

//超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除

//sqlBC.BulkCopyTimeout = 60;

//設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。

//sqlBC.NotifyAfter = 10000;

// sqlBC.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);

//设置要批量写入的表

sqlBC.DestinationTableName = TabelName;

//自定义的datatable和数据库的字段进行对应

for (int i = 0; i < dtColum.Count; i++)

{

sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());

}

//批量写入

sqlBC.WriteToServer(dt);

}

//导入成功,返回1

return 1;

}

catch

{

//导入失败返回-1

return -1;

}

finally

{

//关闭数据库

conn.Close();

}

}

#endregion

3.2.DAL层批量导入数据的代码(DaoSeries.cs)

#region 批量导入系列信息

///

/// 批量导入系列信息

///

/// DataTable数据表-dt;

/// DataColumnCollection 列集合-dtColum

/// 整数:大于0代表导入成功;否则导入失败

public int ImportDatatable(DataTable dt, DataColumnCollection dtColum)

{

//定义一个整型标记变量

int result;

//调用sqlHelper的"批量导入datatable表"的方法

result = sqlheler.InsertTable(dt, "T_SeriesInfo", dtColum);

//返回结果

return result;

}

#endregion

3.3.BLL层批量导入数据的代码(MgrSeriesManager.cs)

#region 批量导入系列

///

/// 批量导入系列

///

/// 数据表

/// 数据列集合

/// 整数:大于0代表导入成功,否则导入失败

public int ImportDatatable(DataTable dt, DataColumnCollection dtColum)

{

DaoSeries series=new DaoSeries();

return series.ImportDatatable(dt, dtColum);

}

#endregion

3.4.界面层构造DataTable数据,向BLL层传递(FrmSeriesManager.aspx,FrmSeriesManager.aspx.cs)

这里构造DataTable数据,我是采用从界面上传Excel,然后从Excel获取输入然后存入DataTable的

3.4.1 从界面传入Excel,调用BLL层Excel转换成DataTable的方法实现

#region 批量导入系列

///

/// 批量导入系列

///

protected void btnImportSeries_Click(object sender, EventArgs e)

{

//BLL层,添加系列信息类

MgrSeriesManager series = new MgrSeriesManager();

//BLL层把excel转化为datatable的方法

MgrCreateExcelData createExcelData = new MgrCreateExcelData();

//获取上传文件地址

string url = fupImprotSeries.PostedFile.FileName.ToString();

if (url == "")

{

//数据源为空,弹出提示:请选择Excel文件!

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

return;

}

string urlLocation = url.Substring(url.LastIndexOf("\\") + 1);//获取文件名

DataTable dt;

//在系统中建文件夹up,并将excel文件另存

this.fupImprotSeries.SaveAs(Server.MapPath("~\\up") + "\\" + urlLocation);//记录文件名到服务器相对应的文件夹中

// Response.Write(urlLocation);

//获得文件路径

string strpath = Server.MapPath("~\\up") + "\\" + urlLocation;

//string strpath = "c:\\abc.xls";

// Response.Write(strpath);

//把excel转换为datatable

dt = createExcelData.CreateExcelDataSource(strpath);

DataColumnCollection dcc = dt.Columns;

//导入数据库

int i = series.ImportDatatable(dt, dcc);

if (i > 0)

{

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

}

else

{

Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "");

}

}

#endregion

3.4.2 BLL层Excel转换成DataTable的类(MgrCreateExcelData.cs)

/*************************************************

作者:jql

小组:一中考核系统

说明:把excel转化为datatable

创建日期:2012年11月25日14:17:06

版本号:v1.0

版权所有:信息技术提高班

**********************************************/

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

//引用各命名空间

using System.Data;

using System.Data.OleDb;

using System.Data.SqlClient;

namespace BLL

{

public class MgrCreateExcelData

{

public MgrCreateExcelData()

{

}

///

/// 传入excel路径,转换为datatable

///

///

///

public DataTable CreateExcelDataSource(string url)

{

DataTable dt = null;

// string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source="

// +url + ";" + "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";

//获得excel数据

string connetionStr = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + url + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";

string strSql = "select * from [Sheet1$]";

OleDbConnection oleConn = new OleDbConnection(connetionStr);

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);

try

{

//把excel数据填充给datatable

dt = new DataTable();

oleAdapter.Fill(dt);

return dt;

}

catch (Exception ex)

{

throw ex;

}

finally

{

oleAdapter.Dispose();

oleConn.Close();

oleConn.Dispose();

}

}

}

}

至此向数据库批量导入数据就实现了,如果你想对要导入数据库的数据做合法性判断,执行Excel转换成Datatable时,自己加些判断处理就行了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目架构开发:数据访问层之Cache

数据访问层简单介绍 数据访问层&#xff0c;提供整个项目的数据访问与持久化功能。在分层系统中所有有关数据访问、检索、持久化的任务&#xff0c;最终都将在这一层完成。 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 1、有缓存、日志、异常处理、数据CRUD、…

jquery mysql实现加入购物车_jQuery实现加入购物车飞入动画效果

HTML首先载入jQuery库文件和jquery.fly.min.js插件。接着&#xff0c;将商品信息html结构布置好&#xff0c;本例中&#xff0c;我们用四个商品并排布置&#xff0c;每个商品box中包括有商品图片、价格、名称以及加入购物车按钮等信息。&#xffe5;3499.00LG 49LF5400-CA 49寸…

结合vue、react、angular谈谈MVC、MVP、MVVM框架

首先&#xff0c;在谈这个话题之前&#xff0c; 我们有必要了解一下库和框架的区别。 我们先来看react官网以及vue官网对他们的定位&#xff1a; react: vue: react我们不说了&#xff0c;官网上明明白白说了&#xff0c;人家是一个library&#xff0c;用于构建用户界面。 v…

先进的ASP.NET开源工作流快速开发框架 - RoadFlow

.net可视化工作流引擎RoadFlow - 设计概述 RoadFlow是天知软件旗下基于.NET的工作流快速开发平台&#xff0c;由从事六年以上OA及工作流开发与实施的团队设计开发&#xff0c;该工作流平台已应用于众多大型企事业单位。拥有全浏览器兼容的可视化流程设计器、表单设计器、基于角…

view [bootstrap-4] not found如何解决_Dubbo如何处理业务异常,这个一定要知道哦

前言我们在开发应用系统时&#xff0c;不可避免的要使用到我们自己定义的异常&#xff0c;所以我们一般通常会用到自定义的业务异常类BusinessException&#xff0c;这个异常会继承extends RuntimeException&#xff0c;当发生业务限制的时候&#xff0c;会throw出来。问题在Sp…

android 加载网络bitmap图片 oom 简书_Android常见问题--ImageView加载图片OOM

开发中给ImageView加载一个高质量图片时&#xff0c;APP抛出了“Canvas: trying to draw too large(840253440bytes) bitmap.”的异常。猜测是图片占用内存太大&#xff0c;超出APP被分配的内存(我用的mate9&#xff0c;APP被分的内存差不多200m)&#xff0c;造成了OOM。解决方…

matlab连接mysql教程视频_Matlab建立到Oracle数据库的连接

Linux下的配置过程和Windows一样&#xff0c;如下&#xff1a;1、将Oracle JDBC的JAR包拷贝到Matlab的相关目录(..\matlab\java\jar\toolbox\)下。一、Matlab通过ODBC建立到Oracle数据库的连接1、在Windows下“开始”→“控制面板”→“性能和维护”→“管理工具”&#xff0c;…

C# App.config学习

进入公司一年多来&#xff0c;对配置文件添加了不少参数&#xff0c;但是从未想过这些参数是如何被读取出来的&#xff0c;今天把读取参数的处理看了一下&#xff0c;收获不少。假定有App.config如下 <?xml version"1.0" encoding"utf-8" ?> <…

大数据-----软件开发模型(详细讲解)

大数据学习免费学习资料&#xff08;免费教程&#xff09; 软件工程中&#xff0c;常用的开了模型有四种&#xff1a;瀑布模型、原型模型、增量模型和螺旋模型。 ⒈瀑布模型包括计划&#xff0c;需求分析、设计、编码、测试、运行维护六个阶段&#xff0c;阶段自上而下&#x…

C#中struct和class的区别详解

本文详细分析了C#中struct和class的区别&#xff0c;对于C#初学者来说是有必要加以了解并掌握的。 简单来说&#xff0c;struct是值类型&#xff0c;创建一个struct类型的实例被分配在栈上。class是引用类型&#xff0c;创建一个class类型实例被分配在托管堆上。但struct和cla…

ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

最近在回顾和总结一些技术&#xff0c;想到了把之前比较火的 SSM 框架重新搭建出来&#xff0c;作为一个小结&#xff0c;同时也希望本文章写出来能对大家有一些帮助和启发&#xff0c;因本人水平有限&#xff0c;难免可能会有一些不对之处&#xff0c;欢迎各位大神拍砖指教&am…

基于TFS实践敏捷-可视化管理

TFS是基于微软平台一套不错的系统&#xff0c;支持源码管理运行调试持续集成自动化测试Bug管理代码评审任务项管理文档管理沟通管理。 基于TFS 2015实践看板管理&#xff0c;让团队的数据可视化&#xff0c;让大家更多的关心产品、关注团队的努力&#xff0c;增强沟通、及时反映…

[转载]基于TFS实践敏捷-修复Bug和执行代码评审

本主题阐释了这些功能&#xff0c;以继续这一关注虚拟敏捷团队成员的一天的教程。 Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务。但是&#xff0c;他的同事发现了一个阻碍他们工作的 Bug&#xff0c;他想立即修复此 Bug。 他暂停了手中的工作并修复此 Bug。 他请求…

单元测试入门

https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?viewvs-2019 使用 Visual Studio 定义和运行单元测试&#xff0c;使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试&#xff0c;确保代码正常运行。…

.net开源框架简介和通用技术选型建议

.net体系 .net core .net 类库 asp.net mvc asp.net webapi asp.net core EF 跨平台和运行时解决方案&#xff08;解决方案&#xff09; Katana&#xff1a;微软基于OWIN规范实现的非IIS寄宿ASP.NET和MVC等。 MONO.NET&#xff1a;跨平台的.NET运行环境&#xff0c;让.NE…

JAVA 2048源码_java实现2048游戏源代码

本文实例为大家分享了java实现2048游戏源代码&#xff0c;供大家参考&#xff0c;具体内容如下一.主要功能&#xff1a;1、游戏初始化&#xff1a;新建游戏44的16宫格画布&#xff0c;随机格子上生成2或者4两个数字2、格子的移动&#xff1a;先判断能否移动&#xff0c;移动后判…

开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源

DncZeus 前言 关于 DncZeus DncZeus Dnc Zeus "Dnc"--.Net Core 的缩写&#xff1b; "Zeus"--中文译为宙斯&#xff0c;是古希腊神话中的众神之王&#xff0c;奥林匹斯十二主神之首&#xff0c;统治宇宙万物的至高无上的主神&#xff08;在古希腊神…

十大开源的.NET用户界面框架 让GUI设计不再犯难

选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题&#xff0c;因为用户界面相当于一款应用的"门面"&#xff0c;直接面向用户。好的UI更能吸引用户&#xff0c;有时甚至成为决定一款应用成败的关键。下面小编整理出十大应用最广泛.NET开源用户界面框架&am…

python flv转mp4_ffmpeg将多个flv文件合成为mp4(python版)

需求直播生成的flv片段需要做个归档&#xff0c;把指定的文件夹中的flv合并成一个mp4&#xff0c;简单的转码合并操作直接用命令行调用来实现。注意事项flv文件直接合并生成mp4的话只有第一个flv的内容才能播放&#xff0c;需要先转换成ts再合成mp4使用的第三方库ffmpy&#xf…

多租户技术

本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 多租户技术&#xff08;英语&#xff1a;multi-tenancy technology&#xff09;或称多重租赁技术&#xff0c;是一种软件架构技术&#xff0c;它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件&…