首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

数据层大家都用什么方法读取数据?该怎么解决

2012-01-18 
数据层大家都用什么方法读取数据? SqlDataReadermyReader......while(myReader.Read()){一般就读10来行数

数据层大家都用什么方法读取数据?

SqlDataReader   myReader;
......
while(myReader.Read())
{
一般就读10来行数据,大家都用什么方法去读?
}

[解决办法]
看你有什么功能要求,如果你需要精确定位数据集的某条记录,那么用dataset比较好,如果仅仅是绑定显示而且不对其修改那么datareader比较不错
[解决办法]
myReader[ "id "]
[解决办法]
看情况咯
Reader和DataSet都用
[解决办法]
像这种情况用数据适配器去读就可以了(SqlDataAdapter),因为SqlDataReader做起来还是相对麻烦些,且SqlConnection被占用.

[解决办法]
使用GotDotNet.ApplicationBlocks.Data
没有发言权
[解决办法]
sqlserver用ApplicationBlocks.Data最合适了,
可以适当剪裁一下,里面overload太多了,大半不常用。
oracle可以仿照ApplicationBlocks.Data自已做一个。
[解决办法]
我用dataset,如果数据比较大的情况下就用SP了
[解决办法]
1、读取一条记录的时候用 DataReader

2、读取多条记录但是每一条记录只取一两条记录 的时候用 DataReader

3、其他的时候尽量用 DataTable

4、一次返回多个记录集的时候用 DataSet 。
[解决办法]

这种情况在Asp.net中要用数据绑定才好啊

不知道你是不是要做三层

http://www.51aspx.com/Tags/2
[解决办法]
同意楼上的
1、读取一条记录的时候用 DataReader

2、读取多条记录但是每一条记录只取一两条记录 的时候用 DataReader

3、其他的时候尽量用 DataTable

4、一次返回多个记录集的时候用 DataSet 。

[解决办法]
补充一条

5、不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源。



[解决办法]
尽量用DataReader 读取的数据的时候通过实体类传递
[解决办法]
同意楼上。
读取完了就关闭DataReader。这家伙独占数据库连接。

[解决办法]
DataHelper
[解决办法]
有人说不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源,那么请问,在填充dataset、datatable时是不是也有时间?dataset、datatable是不是还要实例化过程、填充过程?如果我取20行数据,用什么好啊。如果是一行呢?
[解决办法]
添充DataTable的时间是比较固定的,是比较短的。

添充DataTable 相当于象数组里添加数据。

而绑定控件的时间是和控件的复杂程度有关的,越复杂的所需的时间就越长。

(这里的控件指的是显示用的控件,比如DataGrid Repeater等)

绑定控件实际上是组合字符串(HTML格式的),记录越多,控件越复杂,最后生成的字符串就越大,大家都知道,对于字符串的处理是比较慢的(至少比数组慢),尤其是一点一点加上去的字符串。

(控件越复杂) 指的是 有很多 <table> <TR> <TD> <DIV> 这样的html代码。



[解决办法]
我想问楼上大哥,比如我做首页,大概有10个以上的地方需要显示前10条记录,用什么方式好呢?
用dataset一次返回,绑定
还是datatable多次读库返回,绑定
请问:使用Repeater控件快,还是自己StringBuder构造,缓存,并用lable显示,哪种较好啊?
[解决办法]
有人说不要用 DataReader 来绑定控件,因为会增加数据库连接的open时间。就是多占用了宝贵的连接资源,那么请问,在填充dataset、datatable时是不是也有时间?dataset、datatable是不是还要实例化过程、填充过程?如果我取20行数据,用什么好啊。如果是一行呢?
------------------
如果你直接用IDataReader绑定控件,那么在数据绑定完之前,Connection一直都没有关闭(特别是你用SqlHelper时),这样对数据库造成的压力就会很大


[解决办法]
SqlDataAdapter这个功能要好些,SqlDataReader 是只进的,读取的速度也慢,内容也要少的少。
[解决办法]
我想问楼上大哥,比如我做首页,大概有10个以上的地方需要显示前10条记录,用什么方式好呢?
用dataset一次返回,绑定
还是datatable多次读库返回,绑定
请问:使用Repeater控件快,还是自己StringBuder构造,缓存,并用lable显示,哪种较好啊?

================

这个就是一个很复杂的情况了。涉及到很多的因素。

先说一下我的做法吧。

第一种:(以前的方式)
1、写一个存储过程,返回所有所需的记录集,比如写上10个select 语句,一次性返回十个记录集。

2、填充到DataSet里面,因为记录集大于1。等于一的话就直接使用DataTable。

3、然后帮定到十个Repeater 控件上。

4、绑定的方式: <%# ((DataRowView)Container.DataItem)[ "CityID "] %> (比较快)
不要使用 <%# DataBinder.Eval(Container, "DataItem.City ")%> (很慢)

(绑定方式的具体测试 http://blog.csdn.net/jyk/archive/2006/03/15/625389.aspx)

其实最后的绑定方式是很重要的,因为效率差很多,其它的效率差的不是太大。


第二种:自己写一个结构数组来存放记录集,然后在页面上用循环的方式显示数据(有点asp的感觉)。添充结构数组就可以使用DataReader来填充。


===========


要想证明到底谁更好,最好的方式就是写一个程序测试一下,但是由于因数太多,测试情况也就很多,刚才大陆的想了一下:

数据源 两个 DataTable DataReader

记录数 三种 1条、十条、一百条。(也可以是其他的情况)

控件 两个 DataGrid、Repeater (其他)

绑定方式 两种 就是上面写的两种

测试 三种 只fill数据、只绑定数据、先fill在绑定

2*3*2*2*3 = 72种

要想测试全面一点的话至少需要30多个测试。


热点排行