关闭

.NET批量大数据插入性能分析及比较

发表于:2015-4-15 09:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:俺_在路上    来源:51Testing软件测试网采编

  数据插入使用了以下几种方式
  1. 逐条数据插入
  2. 拼接sql语句批量插入
  3. 拼接sql语句并使用Transaction
  4. 拼接sql语句并使用SqlTransaction
  5. 使用DataAdapter
  6. 使用TransactionScope及SqlBulkCopy
  7. 使用表值参数
  数据库使用SQL Server,脚本如下
  create table TestTable
  (
  Id int
  ,Name nvarchar(20)
  )
  程序中生成测试DataTable结构和测试数据的类如下
1.public class Tools
2.{
3.    public static DataTable MakeDataTable()
4.    {
5.        DataTable table = new DataTable();
6.
7.        //生成DataTable的模式(schema)
8.        table.Columns.Add("Id", Type.GetType("System.Int32"));
9.        table.Columns.Add("Name", Type.GetType("System.String"));
10.
11.        //设置主键
12.        table.PrimaryKey = new DataColumn[] { table.Columns["ID"] };
13.        table.Columns["Id"].AutoIncrement = true;
14.        table.Columns["Id"].AutoIncrementSeed = 1;
15.        table.Columns["Id"].ReadOnly = true;
16.        return table;
17.    }
18.
19.    public static void MakeData(DataTable table, int count)
20.    {
21.        if (table == null)
22.            return;
23.
24.        if (count <= 0)
25.            return;
26.
27.        DataRow row = null;
28.
29.        for (int i = 1; i <= count; i++)
30.        {
31.            //创建一个新的DataRow对象(生成一个新行)
32.            row = table.NewRow();
33.            row["Name"] = "Test" + i.ToString();
34.            //添加新的DataRow
35.            table.Rows.Add(row);
36.        }
37.    }
38.}
public class Tools
{
public static DataTable MakeDataTable()
{
DataTable table = new DataTable();
//生成DataTable的模式(schema)
table.Columns.Add("Id", Type.GetType("System.Int32"));
table.Columns.Add("Name", Type.GetType("System.String"));
//设置主键
table.PrimaryKey = new DataColumn[] { table.Columns["ID"] };
table.Columns["Id"].AutoIncrement = true;
table.Columns["Id"].AutoIncrementSeed = 1;
table.Columns["Id"].ReadOnly = true;
return table;
}
public static void MakeData(DataTable table, int count)
{
if (table == null)
return;
if (count <= 0)
return;
DataRow row = null;
for (int i = 1; i <= count; i++)
{
//创建一个新的DataRow对象(生成一个新行)
row = table.NewRow();
row["Name"] = "Test" + i.ToString();
//添加新的DataRow
table.Rows.Add(row);
}
}
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号