社区
C#
帖子详情
读select语句时用DataReader一个个的读好呢,还是DataAdapter的fill方法好呢?
mqmmx
2005-11-22 11:44:23
如我有一个select语句返回查询结果时是直接用DataAdapter的fill方法填入好呢,还是用Command方法的ExecuteReader,然后根据reader的表结构建表,加入数据。
以上两个方法哪个好些呢?我特指的是一些数据量较大的查询?
可以的话请各位说说两个方法的好处
...全文
257
13
打赏
收藏
读select语句时用DataReader一个个的读好呢,还是DataAdapter的fill方法好呢?
如我有一个select语句返回查询结果时是直接用DataAdapter的fill方法填入好呢,还是用Command方法的ExecuteReader,然后根据reader的表结构建表,加入数据。 以上两个方法哪个好些呢?我特指的是一些数据量较大的查询? 可以的话请各位说说两个方法的好处
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xxuu503
2005-11-22
打赏
举报
回复
fill简单
q_po_o
2005-11-22
打赏
举报
回复
只是读一次数据显示(不再操纵数据)用DataReader,数度快,节约资源
否则用DataAdapter的fill
salsfy
2005-11-22
打赏
举报
回复
datareader是独占方式读,如果需要同时读取数据最好不用。
jujuxys
2005-11-22
打赏
举报
回复
DataReader是只进、只读的,所以它的优点是读取速度快,应用于通常的无结构信息数据的读取,它是一个轻量级的数据访问,缺点是一个DataReader必须依赖于一个Connection;DataAdapter的优点在于可以fill带有结构描述信息的DataSet,同时不依赖于一个Connection,是重量级的访问。如果你要从Reader中读取数据填充表,显然是fill比较合适,因为在1.1框架中的DataTable是没有索引结构的,插入操作消耗会比较大。
Qqwwee_Com
2005-11-22
打赏
举报
回复
速度最快是是datareader 最方便的是dataset
批量读取数据最快的代码如下,比直接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
jijl2001
2005-11-22
打赏
举报
回复
楼上有理
止戈而立
2005-11-22
打赏
举报
回复
看你需要显示什么数据了。。如果是想用dataGrid把数据显示出来,当然是fill了。。
如果是想一个个的显示。。DataReader也许好一些。。
fokker
2005-11-22
打赏
举报
回复
DataReader是只读的,速度应该比Fill出来的DataSet要快。
happyfamily
2005-11-22
打赏
举报
回复
后者好一些
1、得到了结构填充,加快了速度。
2、datareader读数据最快。
lsqkeke
2005-11-22
打赏
举报
回复
DataAdapter的fill方法好
mqmmx
2005-11-22
打赏
举报
回复
刚才google上查了一下,原来fill方法最终也是用reader填充的,看来只查询的话确实DataReader快一些。
Micheal_test
2005-11-22
打赏
举报
回复
如果只是读出来用datareader比较快,能不用DataSet就不用,这样程序的性能会好一些。
flyingZFX
2005-11-22
打赏
举报
回复
学习。
C#全能速查宝典
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、
方法
及事件、数据库开发、文件、数据流与...,共包含562个C#编程中常用的属性、
方法
、类和各种技术...
ADO.NET本质论.pdf
5.11 应该使用
data
set还是
data
reader
5.12 小结 第6章 数据绑定:ado.net和gui 6.1 windows窗体和web窗体 6.2 数据表示模式 6.3 使用数据绑定控件 6.3.1 web窗体数据绑定类型 6.3.2 数据绑定控件...
C# 简单ADO.NET数据库教程
基于Visual Studio 2019环境下,主要讲解C#中ADO.net的操作,涉及:数据库连接测试、Connection类的语法和使用、Command类的语法和使用、
Data
Reader
类的语法和使用、实现数据库的增、删、改、操作;
使用
Data
Reader
、
Data
Set、
Data
Adapter
和
Data
View
使用
Data
Reader
、
Data
Set、
Data
Adapter
和
Data
View ADO.NET提供两个对象用于检索关系型数据并把它存储在内存中,分别是
Data
Set和
Data
Reader
。
Data
Set提供内存中关系数据的表现--包括表和次序、约束等表间的关系的完整...
mysql fill 慢_C#
Data
Adapter
.fill()很慢
这两天发现用从数据库里面取数据时,要过四五秒才会把数据显示在
Data
GridView上,测试一下原来是
Data
Adapter
.fill()要很久时间,而不是
语句
从数据库里面取数据慢。private void Bt
Select
Output
data
_Click(object ...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章