zoukankan      html  css  js  c++  java
  • 用.NET SqlBulkCopy类执行批量插入数据到数据库

    SqlBulkCopy类的属性和方法:

    属性DestinationTableName指定接受复制记录的表。

    方法 WriteToServer执行批量复制。它接受DataTableDataRowIDataReader对象为复制数据源。你还可以用DataTable对象包含一个DataRowState值,指定仅复制匹配的行。

    SqlBulkCopy类的主要作用:

    ·    单独批量复制操作,可将数据从一个数据源移动到SQL Server表中。

    ·    也可执行多个批量复制操作。

    ·    在数据库事务中可执行批量复制操作。

    使用实例:

    #region数据库对应表

            /// <summary>

            /// 数据库对应表

            /// </summary>

            /// <returns></returns>

            private static DataTable GetTable()

            {

                DataTable dt = new DataTable();

                dt.Columns.Add("User_ID", typeof(string));

                dt.Columns.Add("User_Name", typeof(string));

                dt.Columns.Add("User_Birth", typeof(DateTime));

                dt.Columns.Add("User_Sex", typeof(int));

                return dt;

            }

            #endregion

     

            /// <summary>

            /// 批量插入数据

            /// </summary>

            /// <param name="context"></param>

            /// <returns></returns>

            public void AddModels()

            { List<UserEntity> users = (List< UserEntity>)HttpContext.Current.Cache["UserList "];         

                DataTable dt_users = GetTable ();

                foreach (UserEntity model in users)

                {

                    DataRow dr_user = dt_ users.NewRow();

                  

                        dr_ user ["User_ID"] = Guid.NewGuid().Tostring();

                        dr_ user ["User_Name "] = model.UserName;

                        dr_ user ["User_Birth "] = model.UserBirth;

                        dr_ user ["UserSex"] = model.Sex;

                        dt_ users.Rows.Add(dr_ user);

                    }

                }

                if (dt_ users != null && dt_ user.Rows.Count > 0)

                {

                    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConn"].ConnectionString))

                    {

                        conn.Open();

                        using (SqlTransaction trans = conn.BeginTransaction())

                        {

                            try

                            {

                                using (SqlBulkCopy bulk = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, trans))

                                {

                                    bulk.BatchSize = 1000000;

                                    bulk.DestinationTableName = "db_User";

                                    bulk.WriteToServer(dt_users);

                                    trans.Commit();

                                    IsRead = true;

                                }

                            }

                            catch

                            {

                                IsRead = false;

                                trans.Rollback();

                            }

                        }

                    }

                }

            }

  • 相关阅读:
    转载:混淆包含SlidingMenu、gson等Android代码的proguard写法
    今天解决的两个问题
    C++中指针和引用的区别
    负载均衡服务器session共享的解决方案 (转载)
    Entity Framework的默认值BUG解决方法
    【转】SAPI中的IspeechRecoContext(接口)
    Sapi 添加语法的文章(转载)
    SAPI训练文件存储位置
    Flask第九篇 Flask 中的蓝图(BluePrint)
    Flask 第八篇 实例化Flask的参数 及 对app的配置
  • 原文地址:https://www.cnblogs.com/Cynosure/p/2214577.html
Copyright © 2011-2022 走看看