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寸…

angular是MVC模式还是MVVM架构模式

下面仅是个人对angular是MVC或者MVVM的理解。 首先在讨论angular是哪种模式之前&#xff0c;我们得先了解什么是MVVM和MVC。 MVVM vs MVC 总体介绍 首先&#xff0c;两者都是一种架构思想。都是从后端演变而来。 具体的演变流程&#xff1a;传统MVC ——> MVP ——>…

mysql current_MySQL中CURRENT_TIMESTAMP数据类型详解

例1. MySQL 获得当前时间戳函数&#xff1a;current_timestamp, current_timestamp()代码如下mysql> select current_timestamp, current_timestamp();------------------------------------------| current_timestamp | current_timestamp() |----------------------------…

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

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

mysql emma_ubuntu mysql emma中文乱码问题解决

ubuntu mysql emma中文乱码问题解决emma默认用apt-get 安装的话&#xff0c;emma是不支持中文的&#xff0c;配置文件或直接修改emma程序源文件(python)。apt-get安装emmasudo apt-get install emmaubuntu的apt-get 安装emma是在/usr/share/emma目录下面。cd /usr/share/emma/e…

Vue(MVVM)、React(MVVM)、Angular(MVC)对比

前言 昨天阿里内推电面一面&#xff0c;面试官了解到项目中用过Vue&#xff0c;就问为什么前端框架使用Vue而不适用其他的框架&#xff0c;当时就懵了。因为只用过Vue&#xff0c;不了解其他两个框架&#xff0c;今天就赶紧去了解一下他们之间的区别。大家发现如果本文中哪个地…

.NET的MVVM框架

Model-View-ViewModel 是一种架构模式&#xff0c;主要在 WPF、Silverlight 和 WP7 开发里使用&#xff0c;它的目标是从视图层移除几乎所有代码隐藏&#xff08;code-behind&#xff09;。交互设计师可以专注于使用 XAML 表达用户体验需求&#xff0c;然后创建和视图模型的绑定…

mysql 索引 lt =_MySQL索引相关

MySQL索引采用的是BTREE&#xff0c;多列联合索引是一个有序元组&#xff0c;其中各个元素均为数据表的一列。设一个表有M列&#xff0c;建一个度为n的多列联合索引&#xff0c;深度h lognM&#xff0c;设一组索引列的大小为s&#xff0c;索引文件的大小可以计算为s*M*(1M/nM/…

.NET平台下开源框架

一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码&#xff0c;而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。 NKalore是一款编程语言&#xff0c;它扩展…

mysql存储过程查询所有表_mysql存储过程利用游标查询每个数据库的所有表

DELIMITER $DROP PROCEDURE listAllDB;CREATE PROCEDURE listAllDB()BEGINDECLARE no_more_record INT DEFAULT 0;/*定义2个变量&#xff1a;temp用于记录游标每次next的值&#xff0c;schemaName表示将所有temp拼接后的值*/DECLARE schemaName varchar(500) DEFAULT ;DECLARE …

先进的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…

c# 自定义应用程序配置文件(app.config)

1. 向项目添加app.config文件&#xff1a; 右击项目名称&#xff0c;选择“添加”→“添加新建项”&#xff0c;在出现的“添加新项”对话框中&#xff0c;选择“添加应用程序配置文件”&#xff1b;如果项目以前没有配置文件&#xff0c;则默认的文件名称为“app.config”&…

python爬取文件归类_python爬取各类文档方法归类汇总

HTML文档是互联网上的主要文档类型&#xff0c;但还存在如TXT、WORD、excel、PDF、csv等多种类型的文档。网络爬虫不仅需要能够抓取HTML中的敏感信息&#xff0c;也需要有抓取其他类型文档的能力。下面简要记录一些个人已知的基于python3的抓取方法&#xff0c;以备查阅。1.抓取…

.NET(C#)有哪些主流的ORM框架

前言 在以前的一篇文章中&#xff0c;为大家分享了《什么是ORM&#xff1f;为什么用ORM&#xff1f;浅析ORM的使用及利弊》。那么&#xff0c;在目前的.NET(C#)的世界里&#xff0c;有哪些主流的ORM&#xff0c;SqlSugar&#xff0c;Dapper&#xff0c;Entity Framework(EF)还…

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。解决方…

.net开源框架开源类库(整理)

常用库 Json.NET https://github.com/JamesNK/Newtonsoft.Json Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json&#xff0c;通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中…

docker jdk mysql_docker部署springboot前后端分离项目(jdk+jar包+mysql+redis+nginx)(示例代码)...

jdk1.8&#xff0c;dockerfile文件1.vim jdk-dockerfile?FROM centos:7MAINTAINER sinvie.cnWORKDIR /usrRUN mkdir /usr/local/javaADD jdk-8u221-linux-x64.tar.gz /usr/local/java/ENV JAVA_HOME /usr/local/java/jdk1.8.0_221ENV JRE_HOME $JAVA_HOME/jreENV CLASSPATH $J…

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

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