数据层大家都用什么方法读取数据?
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多个测试。