当前位置: 代码迷 >> 综合 >> .net SqlBulkCopy 批量添加
  详细解决方案

.net SqlBulkCopy 批量添加

热度:20   发布时间:2023-12-22 14:53:12.0

string connectionString    ----获得web.congfig的数据库链接配置

//创建一个本地的数据集合
                DataTable dt = new DataTable();
                dt.Columns.Add("ColumnId");
                dt.Columns.Add("RoleId");
                dt.Columns.Add("CreateTime");
                for (int i = 1; i < cidList.Length - 1; i++)
                {
                    DataRow row = dt.NewRow();//创建 DataRow对象
                    //为每列赋值
                    row["ColumnId"] =cidList[i] ;
                    row["RoleId"] = RoleColumnId;
                    row["CreateTime"] = DateTime.Now;

                    dt.Rows.Add(row);//插入到本地datatable中

                }
                bool retBoll = ExcuteNonQuery(dt);

public static bool ExcuteNonQuery(DataTable dt)
        {
           SqlConnection connection = new SqlConnection(connectionString);
            connection.Open();
            SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connection);
            sqlbulkcopy.BulkCopyTimeout = 100;  //超时之前操作完成所允许的秒数
            //sqlbulkcopy.BatchSize = dt.Rows.Count;  //每一批次中的行数
            sqlbulkcopy.DestinationTableName = dt.TableName;  //服务器上目标表的名称
            sqlbulkcopy.ColumnMappings.Add("ColumnId", "ColumnId");
            sqlbulkcopy.ColumnMappings.Add("RoleId", "RoleId");
            sqlbulkcopy.ColumnMappings.Add("CreateTime", "CreateTime");
            //for (int i = 0; i < dt.Columns.Count; i++)
            //{

            //    sqlbulkcopy.ColumnMappings.Add(dt[i].Columns, dt.Columns);  //映射定义数据源中的列和目标表中的列之间的关系
            //}
            sqlbulkcopy.WriteToServer(dt);  // 将DataTable数据上传到数据表中
            connection.Close();
            return true;
        }