SqlDataReader myReader;
......
while(myReader.Read())
{
一般就读10来行数据,大家都用什么方法去读?
}
解决方案 »
- 我又要问问题了,关于repeater查询后分页的问题
- 在.net中点击按钮不触发formValidator验证
- 请教个JSON异步获取的问题
- asp.net中如何实现多文件多次添加,一次上传
- 我在后台删除datagrid里的一条记录后,点击页面上的后按纽后,还能看到刚才删除的那条记录!怎样才能后退后更新一下datagrid里的数据使刚
- javascript的response问题
- C#学习问题
- 关于SQL Server存储过程返回输出参数的问题。
- 水晶报表问题,急急急!!!
- ASP.NET 写的爬虫程序被屏蔽了,大家帮忙看看
- 谁给传一个设置好的fckeditor,感激不尽…………顶者也有分!
- 那为高手能帮我解答一下真诚的面向对象编程??
Reader和DataSet都用
没有发言权
可以适当剪裁一下,里面overload太多了,大半不常用。
oracle可以仿照ApplicationBlocks.Data自已做一个。
这种情况在Asp.net中要用数据绑定才好啊不知道你是不是要做三层http://www.51aspx.com/Tags/2
1、读取一条记录的时候用 DataReader2、读取多条记录但是每一条记录只取一两条记录 的时候用 DataReader3、其他的时候尽量用 DataTable 4、一次返回多个记录集的时候用 DataSet 。
不知道好不好,或者是否还有更好的方法。
读取完了就关闭DataReader。这家伙独占数据库连接。
用dataset一次返回,绑定
还是datatable多次读库返回,绑定
请问:使用Repeater控件快,还是自己StringBuder构造,缓存,并用lable显示,哪种较好啊?
------------------
如果你直接用IDataReader绑定控件,那么在数据绑定完之前,Connection一直都没有关闭(特别是你用SqlHelper时),这样对数据库造成的压力就会很大
用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多个测试。
SqlConnection mycon=new SqlConnection(ConfigurationSettings.AppSettings["connstring"]);
//上面connstring为web.config中的数据库连接字符串
SqlCommand mycmd=mycon.CreateCommand();
mycmd.CommandText="打开数据库的语句";
try
{
mycon.open();
SqlDataReader mydr=mycmd.ExecuteReader();
DataGrid.DataSource=mydr;
DataGrid.DataBind();
}
finally
{
mycon.disponse();//关闭数据库链接
}
DataGrid.DataSource=mydr;
DataGrid.DataBind();这个就是mycon.Close() 就是关闭数据库了。mycon.disponse();//是销毁对象。只是 SqlConnection 比较特殊,
现在可能用泛型集合
他是通过业务层调用数据层来实现事务的
最好的办法是通过业务层调用业务层来实现事务