封装批量提交数据到表,用于数据同步作业

private string GetSelectFieldNames(DataTable dataTable, string tableName = "", string strwhere = "")
{
if (dataTable == null || dataTable.Columns.Count == 0)
{
return "";
}
if (tableName.NotHasValue())
{
tableName = dataTable.TableName;
}
var columns = (from DataColumn column in dataTable.Columns select column.ColumnName).ToList(); string strColumns = string.Join(",", columns);
string strSql = string.Format("select {0} from {1} {2}", strColumns, tableName, strwhere);
return strSql;
} /// <summary>
/// 批量全表数据同步
/// 该种方式可以支持报错情况下详细的字段错误信息
/// </summary>
/// <param name="dataTable"></param>
/// <param name="toTableName"></param>
/// <returns></returns>
public bool BulkCopyToDataTable(DataTable dataTable, string toTableName = "")
{
if (dataTable == null || dataTable.Rows.Count == 0)
{
Tools.Debug("提交的表为空");
return true;
}
if (toTableName.NotHasValue())
{
toTableName = dataTable.TableName;
}
Tools.Debug("一共提交" + dataTable.Rows.Count + "条数据到" + toTableName); using (var connection = new SqlConnection(DbConnectionString))
{ string strSelectSql = GetSelectFieldNames(dataTable, toTableName, "where 1=2");
SqlTransaction tran =null;
try
{
connection.Open();
var newDatatable = new DataTable();
using (var myDataAdapter = new SqlDataAdapter(strSelectSql, connection))
{ myDataAdapter.Fill(newDatatable);
for (int j = 0; j < dataTable.Rows.Count; j++)
{
newDatatable.Rows.Add(dataTable.Rows[j].ItemArray);
} using (var sqlcommanBuilder = new SqlCommandBuilder(myDataAdapter))
{
tran = connection.BeginTransaction();
myDataAdapter.SelectCommand.Transaction = tran;
myDataAdapter.Update(newDatatable);
tran.Commit();
}
myDataAdapter.Dispose();
}
}
catch (SqlException ex)
{
if (tran != null) tran.Rollback();
Tools.Debug(String.Format("同步平台表:{0} ,执行数据库:{1} ,报错: {2}", toTableName, DbConnectionString, ex.Message));
Tools.Error(ex);
return false;
}
}
return true;
}

  

Datatable批量导入到表的更多相关文章

  1. 批量导入数据表(oracle)

    批量导入数据表(oracle) 1.登陆plsql 2.找到菜单栏 工具>>导入数据>>新增图标(会提示选择*.csv文件) 选择如上图所示 3.选择数据并导入 4.下图为执行 ...

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

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

  3. PLSQL_数据泵定参数批量导入多表Expdp/Impdp Parfile(案例)

    2015-04-01 Created By BaoXinjian

  4. 将Excel中的数据批量导入数据库表

    private boolean import_to_database(String excel_path) throws BiffException, IOException, HsException ...

  5. layui实现批量导入excal表

    layui实现多文件上传,并直接选中需要上传文件的类型 //拖拽上传 upload.render({ elem : '#import', size: , //限制文件大小,单位 KB accept: ...

  6. 【数据传输 2】批量导入的前奏:将Excel表中的数据转换为DataTable类型

    导读:我们知道,在数据库中,数据集DataSet是由多张DataTable表组成.所以,如果我们需要将数据从外部导入到数据库中,那么要做的很重要的一步是将这些数据转换为数据库可以接受的结构.今天在用S ...

  7. Sql自定义表类型批量导入数据

    -- 创建自定义表类型 CREATE TYPE [dbo].[App_ProductTable] AS TABLE( [p_name] [varchar](50) NOT NULL, [p_audio ...

  8. mysql中把一个表的数据批量导入另一个表中

    mysql中把一个表的数据批量导入另一个表中   不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...

  9. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

随机推荐

  1. python 设计模式之桥接模式 Bridge Pattern

    #写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...

  2. F5健康检查导致的服务端连接异常RST

    1. TCP健康检查 比如阿里云,F5负载设备当前都有这种机制. 该实现机制可能会导致后端ECS认为相关TCP连接出现异常(非正常退出),并在业务软件如Java连接池等日志中抛出相应的错误信息,如Co ...

  3. Hibernate Tools插件的安装和使用

    http://ricki.iteye.com/blog/842343 http://blog.csdn.net/kinmet2010/article/details/5976869 http://ww ...

  4. postgresql 利用pgAgent实现定时器任务

    1.安装pgAgent 利用Application Stack Builder安装向导,安装pgAgent. 根据安装向导一步一步安装即可. 安装完成之后,windows服务列表中会增加一个服务:Po ...

  5. html两端对齐的代码

    html语言两端对齐的代码为: <p style="text-align:justify; text-justify:inter-ideograph;"> 文字,需要对 ...

  6. j2s7s300 refers to jaco v2 7DOF spherical 3fingers

    <?xml version="1.0"?> <!-- j2s7s300 refers to jaco v2 7DOF spherical 3fingers --& ...

  7. Python3入门(十三)——常用内置模块之时间日期模块datatime

    1.日期时间模块——datatime //其他模块例如time.calender等模块暂不展开 (1)获取当前时间:datatime.now(): from datetime import datet ...

  8. MVC ViewBag和ViewData的使用

    ViewBag public ActionResult About() { ViewBag.Message = "Your application description page.&quo ...

  9. html5 横向滑动导航栏

    前提 需要引入: <script src="../assets/js/iscroll.js"></script> v4.2版本 ####html <! ...

  10. iOS-关于创建真机调试证书(发布证书,测试证书,推送调试证书)【转】