这篇文章主要介绍了C# OleDbDataReader快速数据读取方式(3种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
查询得到OleDbDataReader后,有三种方式支持数据读取,如下:
//方法一**速度中等
OleDbDataReader reader=command .ExecuteReader();
而(读者. Read())
{
var t1=reader[0];
}
//方法二**速度最慢
OleDbDataReader reader=command .ExecuteReader();
而(读者. Read())
{
var t1=reader['字段名'];
}
//方法三**速度最快
OleDbDataReader reader=command .ExecuteReader();
而(读者. Read())
{
var t1=阅读器GetValue(0);
}
关于速度的描述,下面我们来简单验证一下。
有一个数据库,数据库中的表试验有105945行数据,设计一个循环读取来测试他们的读取速度。
测试源码如下:
静态void Main(string[] args)
{
字符串连接=字符串。格式(' Provider=Microsoft .杰特。OLEDB.4.0数据源={ 0 };',' F:\ \ 2。MDB’);
字符串s1=' ID
字符串s2='探测号;
字符串s3=' X
字符串s4=' Y
字符串s5=' H
字符串sql=字符串。格式('从中选择{0}、{1}、{2}、{3}、{4}管点表s1、s2、s3、s4、S5);
TimeSpan time 1=new TimeSpan();
TimeSpan time 2=new TimeSpan();
TimeSpan time 3=new TimeSpan();
int count=50
//数据库中查询的表有105945行
for(int I=0;我数;我)
{
使用(oledb连接conn=新oledb连接(connstr))
{
#地区
conn . Open();
oledb命令command=conn . create command();
命令CommandText=sql
OleDbDataReader reader=command .ExecuteReader();
现在日期时间=日期时间。现在;
而(读者. Read())
{
var t1=reader[0];var T2=读者[1];var T3=reader[2];var T4=读者[3];var t5=reader[4];
}
时间1=时间1(日期时间。现在-现在);
#结束区域
}
}
for(int I=0;我数;我)
{
使用(oledb连接conn=新oledb连接(connstr))
{
#地区
conn . Open();
oledb命令command 2=conn . create command();
命令2。CommandText=sql
OleDbDataReader reader=command2 .ExecuteReader();
现在日期时间=日期时间。现在;
而(读者. Read())
{
var t1=读者[S1];var T2=读者[S2];var T3=读者[S3];var T4=读者[S4];var t5=reader[S5];
}
时间2=时间2(日期时间。现在-现在);
#结束区域
}
}
for(int I=0;我数;我)
{
使用(oledb连接conn=新oledb连接(connstr))
{
#地区
conn . Open();
oledb command命令3=conn . create命令();
命令3。CommandText=sql
OleDbDataReader reader=command3 .ExecuteReader();
现在日期时间=日期时间。现在;
而(读者. Read())
{
var t1=阅读器GetValue(0);var t2=阅读器GetValue(1);var t3=阅读器GetValue(2);变量t4=阅读器GetValue(3);var t5=阅读器GetValue(4);
}
时间3=时间3(日期时间。现在-现在);
#结束区域
}
}
控制台WriteLine(字符串。格式('方法一:\r\n耗时:{0}s ',时间1。总秒数));
控制台WriteLine(字符串。格式('方法二:\r\n耗时:{0}s ',时间2。总秒数));
控制台WriteLine(字符串。格式('方法三:\r\n耗时:{0}s ',时间3。总秒数));
控制台read key();
}
循环50次结果,即50*105945:
100次循环结果:即100*105945:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。