如我有一个select语句返回查询结果时是直接用DataAdapter的fill方法填入好呢,还是用Command方法的ExecuteReader,然后根据reader的表结构建表,加入数据。
以上两个方法哪个好些呢?我特指的是一些数据量较大的查询?
可以的话请各位说说两个方法的好处
以上两个方法哪个好些呢?我特指的是一些数据量较大的查询?
可以的话请各位说说两个方法的好处
解决方案 »
- 接手一个有50万行源代码的ERP程序?
- 关于字符串的倒序输出
- 创建richtextBox窗口句柄出错,高分求救!!!
- c#中如何把一个项目中的文件放在另一个项目中使用
- 我要写病毒,如何复制自己,如何取得系统的目录
- WINFORM中怎样将Datatable中的数据直接导入到固定格式的Excel中?
- 关于imageList的问题
- 有没有基于xna4.0的打砖块的游戏.源码
- 数据库为sql 系统数据库northing为什么提示 objConnection=New SqlConnection(strConnection);不运行呢/????????????
- 我真的很急!!在线等候您的回复!!!!!
- vs2005中使用datagridview无法更新数据库??
- 浏览器打开CSDN是XML的, 为什么我用WebRequest读出的却是HTML?
1、得到了结构填充,加快了速度。
2、datareader读数据最快。
批量读取数据最快的代码如下,比直接fill快15%-30% /// <summary>
/// GetList:批量获取列表
/// </summary>
/// <returns>ArrayList 比dataset更快的方式。</returns> public System.Collections.ArrayList GetList(){
string StrSql ="Select 产品ID,产品名称,单价,单位数量,订购量,供应商ID,库存量,类别ID,再订购量,中止 FROM 产品";
OleDbDataReader dr = this.CreateOleDbDataReader(StrSql);
entity_产品 Myentity;
Myentity=null;
System.Collections.ArrayList ResultList;
ResultList = new System.Collections.ArrayList();
int[] FieldIndexs=new int[10];
bool IndexInited = false;
while (dr.Read()){
if (!IndexInited) {
FieldIndexs[0] = dr.GetOrdinal("产品ID");
FieldIndexs[1] = dr.GetOrdinal("产品名称");
FieldIndexs[2] = dr.GetOrdinal("单价");
FieldIndexs[3] = dr.GetOrdinal("单位数量");
FieldIndexs[4] = dr.GetOrdinal("订购量");
FieldIndexs[5] = dr.GetOrdinal("供应商ID");
FieldIndexs[6] = dr.GetOrdinal("库存量");
FieldIndexs[7] = dr.GetOrdinal("类别ID");
FieldIndexs[8] = dr.GetOrdinal("再订购量");
FieldIndexs[9] = dr.GetOrdinal("中止");
IndexInited = true;
}
Myentity = new entity_产品();
if (dr.IsDBNull(FieldIndexs[0])) {
Myentity.产品ID ="";}//字符类型,默认为 空字符
else{
Myentity.产品ID = dr.GetInt32(FieldIndexs[0]);
}
if (dr.IsDBNull(FieldIndexs[1])) {
Myentity.产品名称 =null;}//其他 默认为 null
else{
Myentity.产品名称 = dr.GetString(FieldIndexs[1]);
}
if (dr.IsDBNull(FieldIndexs[2])) {
Myentity.单价 =null;}//其他 默认为 null
else{
Myentity.单价 = dr.GetDecimal(FieldIndexs[2]);
}
if (dr.IsDBNull(FieldIndexs[3])) {
Myentity.单位数量 =null;}//其他 默认为 null
else{
Myentity.单位数量 = dr.GetString(FieldIndexs[3]);
}
if (dr.IsDBNull(FieldIndexs[4])) {
Myentity.订购量 ="";}//字符类型,默认为 空字符
else{
Myentity.订购量 = dr.GetInt16(FieldIndexs[4]);
}
if (dr.IsDBNull(FieldIndexs[5])) {
Myentity.供应商ID ="";}//字符类型,默认为 空字符
else{
Myentity.供应商ID = dr.GetInt32(FieldIndexs[5]);
}
if (dr.IsDBNull(FieldIndexs[6])) {
Myentity.库存量 ="";}//字符类型,默认为 空字符
else{
Myentity.库存量 = dr.GetInt16(FieldIndexs[6]);
}
if (dr.IsDBNull(FieldIndexs[7])) {
Myentity.类别ID ="";}//字符类型,默认为 空字符
else{
Myentity.类别ID = dr.GetInt32(FieldIndexs[7]);
}
if (dr.IsDBNull(FieldIndexs[8])) {
Myentity.再订购量 ="";}//字符类型,默认为 空字符
else{
Myentity.再订购量 = dr.GetInt16(FieldIndexs[8]);
}
if (dr.IsDBNull(FieldIndexs[9])) {
Myentity.中止 =null;}//其他 默认为 null
else{
Myentity.中止 = dr.GetBoolean(FieldIndexs[9]);
}
ResultList.Add(Myentity);
}
dr.Close();
return ResultList;
}//GetList以上代码直接通过我的代码生成器生成,欢迎使用。。
地址:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/06/524080.aspx#region 广告开始 CSDN小助手 V2.5,更快、更爽、更方便的浏览CSDN论坛!
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2#endregion
否则用DataAdapter的fill