ADO.net速度慢的问题
我这里还有一个问题想请教你大家:
经我们测试,发现ADO.Net的写入速度为什么比ADO的写入速度忙了7倍?但我们不知道ADO.net花费在那个环节呢?不知道如何提高速度。
ADO.net的测试程序在下面,ADO也是使用循环,而且方法也是非常笨的。
代码:
private void button1_Click(object sender, System.EventArgs e)
{
OleDbCommand cmdInsertGoods;
OleDbParameterCollection pars;
OleDbConnection conn;
DataSet Goods;
DataTable goods;
conn = new OleDbConnection(textBox1.Text);
conn.Open();
//初始化插入Goods的命令
cmdInsertGoods = new OleDbCommand(@"INSERT INTO Goods2
(fstrComputer, fstrOperator, fdtmOpTime, fstrGoodsID, fstrGdsName, fstrGdsStandard,
fstrGdsOrigin, fblnIsColor, fblnIsGoods, fblnIsSize, fblnIsUse, fstrSizeGroupID,
fstrUnitM, fblnIsPro, fblnIsBrunt, fstrProperties)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",conn);
pars = cmdInsertGoods.Parameters;
OleDbParameter parfstrComputer = pars.Add(new OleDbParameter("fstrComputer", OleDbType.VarWChar, 50, "fstrComputer"));
OleDbParameter parfstrOperator = pars.Add(new OleDbParameter("fstrOperator", OleDbType.VarWChar, 50, "fstrOperator"));
OleDbParameter parfdtmOpTime = pars.Add(new OleDbParameter("fdtmOpTime", OleDbType.DBTimeStamp));
OleDbParameter parfstrGoodsID = pars.Add(new OleDbParameter("fstrGoodsID", OleDbType.VarWChar, 50, "fstrGoodsID"));
OleDbParameter parfstrGdsName = pars.Add(new OleDbParameter("fstrGdsName", OleDbType.VarWChar, 128, "fstrGdsName"));
OleDbParameter parfstrGdsStandard = pars.Add(new OleDbParameter("fstrGdsStandard", OleDbType.VarWChar, 50, "fstrGdsStandard"));
OleDbParameter parfstrGdsOrigin = pars.Add(new OleDbParameter("fstrGdsOrigin", OleDbType.VarWChar, 50, "fstrGdsOrigin"));
OleDbParameter parfblnIsColor = pars.Add(new OleDbParameter("fblnIsColor", OleDbType.Boolean, 2, "fblnIsColor"));
OleDbParameter parfblnIsGoods = pars.Add(new OleDbParameter("fblnIsGoods", OleDbType.Boolean, 2, "fblnIsGoods"));
OleDbParameter parfblnIsSize = pars.Add(new OleDbParameter("fblnIsSize", OleDbType.Boolean, 2, "fblnIsSize"));
OleDbParameter parfblnIsUse = pars.Add(new OleDbParameter("fblnIsUse", OleDbType.Boolean, 2, "fblnIsUse"));
OleDbParameter parfstrSizeGroupID = pars.Add(new OleDbParameter("fstrSizeGroupID", OleDbType.VarWChar, 36, "fstrSizeGroupID"));
OleDbParameter parfstrUnitM = pars.Add(new OleDbParameter("fstrUnitM", OleDbType.VarWChar, 20, "fstrUnitM"));
OleDbParameter parfblnIsPro = pars.Add(new OleDbParameter("fblnIsPro", OleDbType.Boolean, 2, "fblnIsPro"));
OleDbParameter parfblnIsBrunt = pars.Add(new OleDbParameter("fblnIsBrunt", OleDbType.Boolean, 2, "fblnIsBrunt"));
OleDbParameter parfstrProperties = pars.Add(new OleDbParameter("fstrProperties", OleDbType.VarWChar, 200, "fstrProperties"));
OleDbCommand cmdSelectGoods = new OleDbCommand("SELECT * FROM Goods",conn);
Goods = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter(cmdSelectGoods);
adp.Fill(Goods,"Goods");
goods = Goods.Tables["Goods"];
DataColumn colfstrComputer = goods.Columns["fstrComputer"];
DataColumn colfstrOperator = goods.Columns["fstrOperator"];
DataColumn colfdtmOpTime = goods.Columns["fdtmOpTime"];
DataColumn colfstrGoodsID = goods.Columns["fstrGoodsID"];
DataColumn colfstrGdsName = goods.Columns["fstrGdsName"];
DataColumn colfstrGdsStandard = goods.Columns["fstrGdsStandard"];
DataColumn colfstrGdsOrigin = goods.Columns
["fstrGdsOrigin"];
DataColumn colfblnIsColor = goods.Columns["fblnIsColor"];
DataColumn colfblnIsGoods = goods.Columns["fblnIsGoods"];
DataColumn colfblnIsSize = goods.Columns["fblnIsSize"];
DataColumn colfblnIsUse = goods.Columns["fblnIsUse"];
DataColumn colfstrSizeGroupID = goods.Columns["fstrSizeGroupID"];
DataColumn colfstrUnitM = goods.Columns["fstrUnitM"];
DataColumn colfblnIsPro = goods.Columns["fblnIsPro"];
DataColumn colfblnIsBrunt = goods.Columns["fblnIsBrunt"];
DataColumn colfstrProperties = goods.Columns["fstrProperties"];
foreach(DataRow row in goods.Rows)
{
try
{
parfstrComputer.Value = row[colfstrComputer];
parfstrOperator.Value = row[colfstrOperator];
parfdtmOpTime.Value = row[colfdtmOpTime];
parfstrGoodsID.Value = row[colfstrGoodsID];
parfstrGdsName.Value = row[colfstrGdsName];
parfstrGdsStandard.Value = row[colfstrGdsStandard];
parfstrGdsOrigin.Value = row[colfstrGdsOrigin];
parfblnIsColor.Value = row[colfblnIsColor];
parfblnIsGoods.Value = row[colfblnIsGoods];
parfblnIsSize.Value = row[colfblnIsSize];
parfblnIsUse.Value = row[colfblnIsUse];
parfstrSizeGroupID.Value = row[colfstrSizeGroupID];
parfstrUnitM.Value = row[colfstrUnitM];
parfblnIsPro.Value = row[colfblnIsPro];
parfblnIsBrunt.Value = row[colfblnIsBrunt];
parfstrProperties.Value = row[colfstrProperties];
cmdInsertGoods.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message);
}
}
}
经我们测试,发现ADO.Net的写入速度为什么比ADO的写入速度忙了7倍?但我们不知道ADO.net花费在那个环节呢?不知道如何提高速度。
ADO.net的测试程序在下面,ADO也是使用循环,而且方法也是非常笨的。
代码:
private void button1_Click(object sender, System.EventArgs e)
{
OleDbCommand cmdInsertGoods;
OleDbParameterCollection pars;
OleDbConnection conn;
DataSet Goods;
DataTable goods;
conn = new OleDbConnection(textBox1.Text);
conn.Open();
//初始化插入Goods的命令
cmdInsertGoods = new OleDbCommand(@"INSERT INTO Goods2
(fstrComputer, fstrOperator, fdtmOpTime, fstrGoodsID, fstrGdsName, fstrGdsStandard,
fstrGdsOrigin, fblnIsColor, fblnIsGoods, fblnIsSize, fblnIsUse, fstrSizeGroupID,
fstrUnitM, fblnIsPro, fblnIsBrunt, fstrProperties)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",conn);
pars = cmdInsertGoods.Parameters;
OleDbParameter parfstrComputer = pars.Add(new OleDbParameter("fstrComputer", OleDbType.VarWChar, 50, "fstrComputer"));
OleDbParameter parfstrOperator = pars.Add(new OleDbParameter("fstrOperator", OleDbType.VarWChar, 50, "fstrOperator"));
OleDbParameter parfdtmOpTime = pars.Add(new OleDbParameter("fdtmOpTime", OleDbType.DBTimeStamp));
OleDbParameter parfstrGoodsID = pars.Add(new OleDbParameter("fstrGoodsID", OleDbType.VarWChar, 50, "fstrGoodsID"));
OleDbParameter parfstrGdsName = pars.Add(new OleDbParameter("fstrGdsName", OleDbType.VarWChar, 128, "fstrGdsName"));
OleDbParameter parfstrGdsStandard = pars.Add(new OleDbParameter("fstrGdsStandard", OleDbType.VarWChar, 50, "fstrGdsStandard"));
OleDbParameter parfstrGdsOrigin = pars.Add(new OleDbParameter("fstrGdsOrigin", OleDbType.VarWChar, 50, "fstrGdsOrigin"));
OleDbParameter parfblnIsColor = pars.Add(new OleDbParameter("fblnIsColor", OleDbType.Boolean, 2, "fblnIsColor"));
OleDbParameter parfblnIsGoods = pars.Add(new OleDbParameter("fblnIsGoods", OleDbType.Boolean, 2, "fblnIsGoods"));
OleDbParameter parfblnIsSize = pars.Add(new OleDbParameter("fblnIsSize", OleDbType.Boolean, 2, "fblnIsSize"));
OleDbParameter parfblnIsUse = pars.Add(new OleDbParameter("fblnIsUse", OleDbType.Boolean, 2, "fblnIsUse"));
OleDbParameter parfstrSizeGroupID = pars.Add(new OleDbParameter("fstrSizeGroupID", OleDbType.VarWChar, 36, "fstrSizeGroupID"));
OleDbParameter parfstrUnitM = pars.Add(new OleDbParameter("fstrUnitM", OleDbType.VarWChar, 20, "fstrUnitM"));
OleDbParameter parfblnIsPro = pars.Add(new OleDbParameter("fblnIsPro", OleDbType.Boolean, 2, "fblnIsPro"));
OleDbParameter parfblnIsBrunt = pars.Add(new OleDbParameter("fblnIsBrunt", OleDbType.Boolean, 2, "fblnIsBrunt"));
OleDbParameter parfstrProperties = pars.Add(new OleDbParameter("fstrProperties", OleDbType.VarWChar, 200, "fstrProperties"));
OleDbCommand cmdSelectGoods = new OleDbCommand("SELECT * FROM Goods",conn);
Goods = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter(cmdSelectGoods);
adp.Fill(Goods,"Goods");
goods = Goods.Tables["Goods"];
DataColumn colfstrComputer = goods.Columns["fstrComputer"];
DataColumn colfstrOperator = goods.Columns["fstrOperator"];
DataColumn colfdtmOpTime = goods.Columns["fdtmOpTime"];
DataColumn colfstrGoodsID = goods.Columns["fstrGoodsID"];
DataColumn colfstrGdsName = goods.Columns["fstrGdsName"];
DataColumn colfstrGdsStandard = goods.Columns["fstrGdsStandard"];
DataColumn colfstrGdsOrigin = goods.Columns
["fstrGdsOrigin"];
DataColumn colfblnIsColor = goods.Columns["fblnIsColor"];
DataColumn colfblnIsGoods = goods.Columns["fblnIsGoods"];
DataColumn colfblnIsSize = goods.Columns["fblnIsSize"];
DataColumn colfblnIsUse = goods.Columns["fblnIsUse"];
DataColumn colfstrSizeGroupID = goods.Columns["fstrSizeGroupID"];
DataColumn colfstrUnitM = goods.Columns["fstrUnitM"];
DataColumn colfblnIsPro = goods.Columns["fblnIsPro"];
DataColumn colfblnIsBrunt = goods.Columns["fblnIsBrunt"];
DataColumn colfstrProperties = goods.Columns["fstrProperties"];
foreach(DataRow row in goods.Rows)
{
try
{
parfstrComputer.Value = row[colfstrComputer];
parfstrOperator.Value = row[colfstrOperator];
parfdtmOpTime.Value = row[colfdtmOpTime];
parfstrGoodsID.Value = row[colfstrGoodsID];
parfstrGdsName.Value = row[colfstrGdsName];
parfstrGdsStandard.Value = row[colfstrGdsStandard];
parfstrGdsOrigin.Value = row[colfstrGdsOrigin];
parfblnIsColor.Value = row[colfblnIsColor];
parfblnIsGoods.Value = row[colfblnIsGoods];
parfblnIsSize.Value = row[colfblnIsSize];
parfblnIsUse.Value = row[colfblnIsUse];
parfstrSizeGroupID.Value = row[colfstrSizeGroupID];
parfstrUnitM.Value = row[colfstrUnitM];
parfblnIsPro.Value = row[colfblnIsPro];
parfblnIsBrunt.Value = row[colfblnIsBrunt];
parfstrProperties.Value = row[colfstrProperties];
cmdInsertGoods.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(this,ex.Message);
}
}
}
...全文
相关推荐
ADO.Net[面试问题]面试题目
下面,我们将深入探讨ADO.NET的一些核心概念和面试中可能遇到的问题。1.
ADO及ADO.NET结构图
ADO的优点在于它简单易用,可以快速地构建数据驱动的应用程序。然而,由于它是基于COM,所以存在性能问题,并且不支持事件驱动编程和离线操作。
ADO.NET sql、LINQ to sql、ADO.NET Entity Framework(EF)数据库连接性能比较
本文将深入探讨三种常见的.NET框架下的数据库访问技术:ADO.NET SQL、LINQ to SQL以及ADO.NET Entity Framework(EF),并重点分析它们在数据库连接性能上的差异
ADO与ADO.NET
每个阶段的技术都试图解决特定的问题,比如跨数据库访问、性能优化、非关系型数据支持等。4. ADO与ADO.NET对比:主要差异在于数据表示和操作方式。
ADO.NET基础_使用ADO.NET访问和操作数据库
本篇文章主要介绍了ADO.NET基础,这是Microsoft .NET Framework中用于访问和操作数据库的重要组件。ADO.NET包含两大核心组件:.NET Framework数据提供程序和D


