请教一些比较迷糊的问题,没事大家进来说说吧。

seizetoday 2009-12-16 10:43:48
页面获取数据时是用DataSet 好还是 DataReader 好?最近写的一个网站发现老是出现 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
网上看了些资料,也检查了一下写的代码,发现都进行了关闭。
错误出现在

行 36: SqlDataAdapter da = new SqlDataAdapter(cmd);
行 37: DataSet ds = new DataSet();
行 38: da.Fill(ds);
行 39: return ds.Tables[0];
行 40: }

以前在外面租的服务器时没出现过,可最近是用自己公司的服务器,就会出现这种问题。

发现有种快疯的感觉。
...全文
151 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
seizetoday 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lovely_baby 的回复:]
http://hi.baidu.com/haicheng00/blog/item/51ea9af01a764fc97931aa96.html

[/Quote]

谢谢,这个我也看过到,也在链接里面加了 Max Pool Size=512 ,还没试过行不行呢。
seizetoday 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yanlong521521 的回复:]
单向的获取数据建议用SqlDataReader,速度要比DataSet好,如果双向传递可以考虑DataSet 不过要考虑到数据一致性的问题(DataSet 是存储在客户端的内存里,虽然减少了与服务器的交互,但是内存里的多份数据拷贝在传回数据库的时候有可能发生数据冲突,如谁先谁后的问题等)
[/Quote]

单向和双向的区别在那儿啊,是不是一个是只读,一是可读可写啊。
yanlong521521 2009-12-16
  • 打赏
  • 举报
回复
单向的获取数据建议用SqlDataReader,速度要比DataSet好,如果双向传递可以考虑DataSet 不过要考虑到数据一致性的问题(DataSet 是存储在客户端的内存里,虽然减少了与服务器的交互,但是内存里的多份数据拷贝在传回数据库的时候有可能发生数据冲突,如谁先谁后的问题等)
xuefeng_zzg 2009-12-16
  • 打赏
  • 举报
回复
mark
屌丝女士111 2009-12-16
  • 打赏
  • 举报
回复
dataset 会憋开 连接数据库

而 dataReader 与数据库一直保持连接状态
Coolyu0916 2009-12-16
  • 打赏
  • 举报
回复
dataset占用资源比较大,不过读取,写入可以随意,reader只能前向,资源消耗比较小。
seizetoday 2009-12-16
  • 打赏
  • 举报
回复
谢谢。
yjcel1988 2009-12-16
  • 打赏
  • 举报
回复
DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable

DataTable:数据表。
一:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt=new DataTable();
da.Fill(dt);

-----------------
直接把数据结果放到datatable中,
二:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet dt=new DataSet();
da.Fill(dt);
----------------
数据结果放到dataset中,若要用那个datatable,可以这样:dataset[0]
更常见的用法:
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet dt=new DataSet();
da.Fill(dt,"table1");
用的时候:这样取datatable:
dataset["table1"]



DataSet不能直接用来存储数据,如果仅用DataSet,它会自动的生成一个DataTable,所以看上去就像一个DataTable。

如果有很多个DataTable需要同时绑定到某个控件,就可以把多个DataTable添加到一个DataSet中,分别起不同的名字就可以了Top
DataReader基于连接,它返回的数据是只读只向前的,适合简单地浏览且耗时比较短的操作。DataSet对象会将所需数据读入内存然后断开连接。它适合对数据进行复杂长时间的操作,并且需要更新数据的情况。Top

SqlDataReader只是建立与数据库之间的类似于一个指针关系,在没有调用Read()方法之间它不从数据读出任何数据,而在调用Read()时也只是从数据库中读出一条数据.DATATABLE是数据表的一个复本,至于DataSet可以反它看作一个数据库,因为它不但可以包括多个表而且还能包括各表之间的关系.所以在进行大量数据访问时(特别是分页方式的访问)建议使用SqlDataReader,这样可以节省大量的内存开销.Top

DataSet就像内存数据库,
DataTable就是表,
库可以包含多个表,也可以包含表之间的关系。
seizetoday 2009-12-16
  • 打赏
  • 举报
回复
咋就没人给点意见呢?

在什么情况下用DataSet 在什么情况下 DataReader ?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧