Asp.Net使用Bulk批量插入数据

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Diagnostics;
 6 using System.Data;
 7 using System.Data.SqlClient;
 8 using System.Configuration;
 9 using Fx678Member.Framework.Exceptions;
10
11 namespace MeiYuanJinYe.Admin.HttpHandler
12 {
13     /// <summary>
14     /// CreateAccount 的摘要说明
15     /// </summary>
16     public class CreateAccount : IHttpHandler
17     {
18
19         public void ProcessRequest(HttpContext context)
20         {
21             context.Response.ContentType = "text/plain";
22             Guid classRoomId = Guid.Parse(context.Request["ClassRoomId"]);
23             int Count = int.Parse(context.Request["Count"]);
24             DataTable dt = GetTableSchema();
25             Random ran = new Random();
26             for (int i = 0; i < Count; i++)//循环往DataTable中赋值
27             {
28                 DataRow r = dt.NewRow();
29                 r[1] = ran.Next(10000000, 100000000);
30                 r[2] = ran.Next(10000000, 100000000);
31                 r[3] = classRoomId;
32                 r[4] = DateTime.Now;
33                 r[5] = 1;
34                 dt.Rows.Add(r);
35             }
36             BulkToDB(dt);
37             context.Response.Write(BulkToDB(dt) ? "ok" : "error");
38             context.Session["dataTable"] = dt;
39         }
40
41
42         public void BulkToDB(DataTable dt)
43         {
44             SqlConnection sqlConn = new SqlConnection(ConfigurationManager.AppSettings["ConnString"]);
45             SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
46             bulkCopy.DestinationTableName = "ClassRoomAccount";//数据库表名
47             bulkCopy.BatchSize = dt.Rows.Count;
48             try
49             {
50                 sqlConn.Open();
51                 if (dt != null && dt.Rows.Count != 0)
52                     bulkCopy.WriteToServer(dt);
53             }
54             catch (Exception ex)
55             {
56                 new AppException("批量生成直播室账号异常", ex);
57             }
58             finally
59             {
60                 sqlConn.Close();
61                 if (bulkCopy != null)
62                     bulkCopy.Close();
63             }
64         }
65
66         public DataTable GetTableSchema()
67         {
68             DataTable dt = new DataTable();
69             dt.Columns.AddRange(new DataColumn[]{
70                 new DataColumn("AccountId",typeof(int)),
71                 new DataColumn("AccountName",typeof(string)),
72                 new DataColumn("Password",typeof(string)),
73                 new DataColumn("ClassRoomId",typeof(Guid)),
74                 new DataColumn("AddDate",typeof(DateTime)),
75                 new DataColumn("IsActive",typeof(int))
76             });//数据库表结构
77             return dt;
78         }
79         public bool IsReusable
80         {
81             get
82             {
83                 return false;
84             }
85         }
86     }
87 }
时间: 2024-11-20 03:11:05

Asp.Net使用Bulk批量插入数据的相关文章

php-elasticsearch bulk批量插入数据

1.单条插入 <?php include '../vendor/Elasticsearch/autoload.php'; $a['hosts'] = array( #需要用户名时 http://user:[email protected]:por 其他时候直接写ip:port 'ip:9200', ); $client = new \Elasticsearch\Client($a); #单条插入 $params = array(); $params['body'] = array( 'xzdfa

SQL Server 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes

C#_批量插入数据到Sqlserver中的四种方式

先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记录的ID的值然后再进行加1运算要少.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如果表中无可避免的存在索引,我们可以通过先删除索引,然后批量插入,最后再重建索引的方式来提高效率. create database CarSYS;    go    use CarSYS;  

用SqlBulkCopy实现批量插入数据

1.建立一张测试表 test CREATE TABLE test ( F_Name NVARCHAR(20) NULL, F_Age INT NULL ) 2.SqlBulkCopy批量插入数据 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Data.SqlClient; 5 using System.Data; 6 7 namespace sqlbulkcopy 8

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

用python操作mysql数据库(之批量插入数据)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor() #对数据进行操作 li = [('tanzhenx','shaoguan'),('huangmengdie','shaoguan')] #定义一个列表,列表中

.Net批量插入数据到SQLServer数据库,SqlBulkCopy类批量插入大数据到数据库

批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储到数据库中,而不需要一次一次的向数据库Insert数据. 经过几次实验,百万级别的数据表,也只需几秒时间内就可以完全的存入数据库中,其速度,比传统的Insert into方法不止快很多倍. 下面看代码: /// <summary> /// 批量插入数据 /// </summary> /

Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知.因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度. 有时需要把一些数据内置到应用中,常用的有以下2种方式:其一直接拷贝制作好的SQLite数据库文件,其二是使用系统提供的数据库,然后把数据批量插入.我更倾向于使用第二种方式:使用系统创建的数据库,然后批量插入数据.批量插入数据也有很多方法,那么那种方法更快呢,下面通过一个dem

用SqlBulkCopy批量插入数据到SqlServer数据库表中

首先创建一个数据库连接类:SQLHelper using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; namespace insetData { public class SQLHelper { public static readonly string Strconn = "Data