zoukankan      html  css  js  c++  java
  • ADO.NET与SQL SERVER之向数据库中批量添加、修改数据

    如何将多条数据批量插入到数据库的数据表中?

    使用SqlBulkCopy,示例如下:

    /// <summary>
    /// 批量导入数据到数据库
    /// </summary>
    /// <param name="table">数据源表</param>
    /// <param name="tableName">数据库表名</param>
    /// <param name="connStr">数据库连接字符串</param>
    /// <param name="mappings">源表与数据库表的列映射关系</param>
    public static void BulkCopyDataTable(DataTable table, string tableName,string connStr, params SqlBulkCopyColumnMapping[] mappings)
    {
        //使用SqlBulkCopy来批量导入数据到数据库
        using (SqlBulkCopy bulkcopy = new SqlBulkCopy(connStr))
        {
            //写出数据库中的目标表名
             bulkcopy.DestinationTableName = tableName;
            //建立数据源与数据库之间列的映射,就是要让SqlBulkCopy知道你要把哪一列插到哪一列
             foreach (SqlBulkCopyColumnMapping mapping in mappings)
            {
                //也可以通过bulkcopy.ColumnMappings.Add("数据源列名", "数据表列名");
                bulkcopy.ColumnMappings.Add(mapping);
            }
            //将数据提交到数据库中
             bulkcopy.WriteToServer(table);
        }
    }

    如何对数据库中数据表的多条数据进行批量更新?

    使用SqlDataAdapter,示例如下:

    //建立数据库连接
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        conn.Open();
        //新建一个SqlDataAdapter,因为只用它来做更新,所以在实例化时就不再填写Select的SQL语句
        using (SqlDataAdapter adapter = new SqlDataAdapter("", conn))
        {
            //写出更新需要使用的SQL语句
             string sqlStr = "update TableName set NeedUpdate = @NewValue where Guid = @Guid";
            //新建一个SqlCommand赋给adapter的UpdateCommand
            adapter.UpdateCommand = new SqlCommand(sqlStr, conn);
            //向UpdateCommand添加列映射,参数含义分别是:
             //SQL语句参数名、字段数据类型、字段长度(我也不知道这啥意思,可能char什么的要用到)和数据源表列名
             adapter.UpdateCommand.Parameters.Add("@NewValue", SqlDbType.Bit, 1, "NewValue");
            adapter.UpdateCommand.Parameters.Add("@Guid", SqlDbType.UniqueIdentifier, 1, "Guid");
            //当设置UpdateBatchSize为非1时,需要将此设为None
            adapter.UpdateCommand.UpdatedRowSource = UpdateRowSource.None;
            //设置每次到服务器批处理的行数
             adapter.UpdateBatchSize = 0;
            //进行更新操作,table是数据源表,里面的数据能符合上面参数的映射关系即可
             adapter.Update(table);
        }
    }

    对于删除的批量操作可能与修改类似,这里暂时就不再多做实验了,以后有机会再记录下来。


    输了你,赢了世界又如何...
  • 相关阅读:
    Solr学习笔记(2) —— Solr管理索引库
    Solr学习笔记(1) —— Solr概述&Solr的安装
    Linux软件安装
    Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建
    Redis学习笔记(3)—— 五种数据类型&keys的通用操作
    Redis学习笔记(4)—— Jedis入门
    Redis学习笔记(2)—— Redis的安装和使用
    Redis学习笔记(1)—— NoSQL&Redis简介
    FastDFS
    Nginx
  • 原文地址:https://www.cnblogs.com/xwgli/p/3006132.html
Copyright © 2011-2022 走看看