严重影响网页速度的代码,怎么优化

liu2009729 2009-08-15 09:41:52
就是下面这段代码,我也不想叫它垃圾代码,因为是我自己写的,但现在看来确实像垃圾了,请高手看看优化
SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=newcn8b004;uid=sa;pwd=1234");
SqlDataAdapter dr1 = new SqlDataAdapter("select * from taocan where tcxiaoqu='虹口小区'", con);
SqlDataAdapter dr2 = new SqlDataAdapter("select * from hztc", con);
SqlDataAdapter dr3 = new SqlDataAdapter("select * from mianshi", con);
SqlDataAdapter dr4 = new SqlDataAdapter("select * from shuijiao", con);
SqlDataAdapter dr5 = new SqlDataAdapter("select * from rouzhipin", con);
SqlDataAdapter dr6 = new SqlDataAdapter("select * from yinliao", con);
SqlDataAdapter dr7 = new SqlDataAdapter("select * from xiaochao", con);
SqlDataAdapter dr8 = new SqlDataAdapter("select * from hanbaobao", con);
SqlDataAdapter dr9 = new SqlDataAdapter("select * from Province", con);
SqlDataAdapter dr10 = new SqlDataAdapter("select * from City", con);
SqlDataAdapter dr11 = new SqlDataAdapter("select * from District", con);
SqlDataAdapter dr12 = new SqlDataAdapter("select * from xiaoqu where UnderDistrictName='芝罘区' ", con);
SqlDataAdapter dr13 = new SqlDataAdapter("select * from Street where UnderQuName='虹口小区' ", con);
SqlDataAdapter dr14 = new SqlDataAdapter("select * from newProduct", con);
SqlDataAdapter dr15 = new SqlDataAdapter("select * from other", con);
DataSet ds = new DataSet();
dr1.Fill(ds, "taocan");
dr2.Fill(ds, "hz");
dr3.Fill(ds, "mianshi");
dr4.Fill(ds, "shuijiao");
dr5.Fill(ds, "rouzhipin");
dr6.Fill(ds, "yinliao");
dr7.Fill(ds, "xiaochao");
dr8.Fill(ds, "hanbaobao");
dr9.Fill(ds, "sheng");
dr10.Fill(ds, "shi");
dr11.Fill(ds, "qu");
dr12.Fill(ds, "xiaoqu");
dr13.Fill(ds, "street");
dr14.Fill(ds, "new");
dr15.Fill(ds, "other");
this.rptProduct.DataSource = ds.Tables["taocan"].DefaultView;
this.Datalist1.DataSource = ds.Tables["hz"].DefaultView;
this.Datalist2.DataSource = ds.Tables["mianshi"].DefaultView;
this.Datalist3.DataSource = ds.Tables["shuijiao"].DefaultView;
this.Datalist4.DataSource = ds.Tables["rouzhipin"].DefaultView;
this.Datalist5.DataSource = ds.Tables["yinliao"].DefaultView;
this.Datalist6.DataSource = ds.Tables["xiaochao"].DefaultView;
this.Datalist7.DataSource = ds.Tables["hanbaobao"].DefaultView;
this.Datalist8.DataSource = ds.Tables["other"].DefaultView;
this.ddlProvince.DataSource = ds.Tables["sheng"].DefaultView;
this.ddlCity.DataSource = ds.Tables["shi"].DefaultView;
this.ddlArea.DataSource = ds.Tables["qu"].DefaultView;
this.ddlDeliveryArea.DataSource = ds.Tables["xiaoqu"].DefaultView;
this.ddlStreet.DataSource = ds.Tables["street"].DefaultView;
this.rptNewsProduct.DataSource = ds.Tables["new"].DefaultView;
this.ddlProvince.DataTextField = "ProvinceName";
this.ddlCity.DataTextField = "CityName";
this.ddlArea.DataTextField = "DistrictName";
this.ddlDeliveryArea.DataTextField = "QuName";
this.ddlStreet.DataTextField = "StreetName";
this.rptProduct.DataBind();
this.rptNewsProduct.DataBind();
this.Datalist1.DataBind();
this.Datalist2.DataBind();
this.Datalist3.DataBind();
this.Datalist4.DataBind();
this.Datalist5.DataBind();
this.Datalist6.DataBind();
this.Datalist7.DataBind();
this.Datalist8.DataBind();
this.ddlProvince.DataBind();
this.ddlCity.DataBind();
this.ddlArea.DataBind();
this.ddlDeliveryArea.DataBind();
this.ddlStreet.DataBind();
...全文
174 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
IHandler 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 liu2009729 的回复:]
引用 7 楼 flyhorse1010 的回复:
SqlDataAdapter dr=new SqlDataAdapter("Select * From [Table1];Select * From [Table2];Select * From [Tabel3];......",con);
DataSet ds=new DataSet();
dr.Fill(ds);
...这样子拼接多个select 语句
              this.rptProduct.DataSource = ds.Tables["taocan"].DefaultView;
            this.Datalist1.DataSource = ds.Tables["hz"].DefaultView;
            this.Datalist2.DataSource = ds.Tables["mianshi"].DefaultView;
            this.Datalist3.DataSource = ds.Tables["shuijiao"].DefaultView;
  ......后面的一样ok


不大明白啊 ,dr.Fill(ds);是放在一个dataset的datatable里,后面怎么去引用如ds.Tables["taocan"].DefaultView
[/Quote]
是将每个Select的结果集填充到一张DataTable,调用的时候,按顺序索引
ds.Tables[0].DefaultView;
....
ds.Tables[14].DefaultView;
liu2009729 2009-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 flyhorse1010 的回复:]
SqlDataAdapter dr=new SqlDataAdapter("Select * From [Table1];Select * From [Table2];Select * From [Tabel3];......",con);
DataSet ds=new DataSet();
dr.Fill(ds);
...这样子拼接多个select 语句
              this.rptProduct.DataSource = ds.Tables["taocan"].DefaultView;
            this.Datalist1.DataSource = ds.Tables["hz"].DefaultView;
            this.Datalist2.DataSource = ds.Tables["mianshi"].DefaultView;
            this.Datalist3.DataSource = ds.Tables["shuijiao"].DefaultView;
  ......后面的一样ok
[/Quote]

不大明白啊 ,dr.Fill(ds);是放在一个dataset的datatable里,后面怎么去引用如ds.Tables["taocan"].DefaultView
Lovely_baby 2009-08-16
  • 打赏
  • 举报
回复
额 你的冗余代码 使很多
你的那些select * 之类的能不用就少用了
很占资源的
惜分飞 2009-08-16
  • 打赏
  • 举报
回复
放到一个dataset的多个datatable里面,也许会好点,不过上面有几个代码感觉上是错误的,没有具体测试,14楼的也许可以用哦
upghost 2009-08-16
  • 打赏
  • 举报
回复
1.找一个dbhelper封装一下吧。
2.不要开那么多dataset,放到多个datatable中,然后放入一个dataset。
3.可以用存储过程,一次性的读过来。
foman 2009-08-15
  • 打赏
  • 举报
回复
可以看看petshop
KK3K2005 2009-08-15
  • 打赏
  • 举报
回复
这段代码至少有可读性
如果这段代码要在好多地方用就把数据库的操作封装下
只在单独一个地方 这样写也没问题 至少一看就懂了

在需要的时候才重构代码
当然大部分时候数据库操作还是封装下比较好
class sqlhelper{
public static void FillDataSet(string sql,DataSet ds){
『数据库操作。。。』
}
}

这样调用不要写 这么多行new SqlDataAdapter 而且异常处理也比较集中 甚至以后可以简单改变对数据源的变更 而调用它的代码不需要更改
IHandler 2009-08-15
  • 打赏
  • 举报
回复

SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=newcn8b004;uid=sa;pwd=1234");
StringBuilder Sql = new StringBuilder()
.Append("select * from taocan where tcxiaoqu='虹口小区';")
.Append("select * from hztc;")
.Append("select * from mianshi;")
.Append("select * from shuijiao;")
.Append("select * from rouzhipin;")
.Append("select * from yinliao;")
.Append("select * from xiaochao;")
.Append("select * from hanbaobao;")
.Append("select * from Province;")
.Append("select * from City;")
.Append("select * from District;")
.Append("select * from xiaoqu where UnderDistrictName='芝罘区';")
.Append("select * from Street where UnderQuName='虹口小区';")
.Append("select * from newProduct;")
.Append("select * from other");
SqlDataAdapter dr = new SqlDataAdapter(Sql, con);
DataSet ds = new DataSet();
dr1.Fill(ds, "taocan");
dr.Fill(ds);
//this.Datalist8.DataSource = ds.Tables["other"].DefaultView; 这样写,用索引
this.Datalist8.DataSource = ds.Tables[14].DefaultView;

机器没环境,没测试
bobo_包子 2009-08-15
  • 打赏
  • 举报
回复
能知道自己的垃圾代码 就说明进步了。
以后会好地啊
wuyq11 2009-08-15
  • 打赏
  • 举报
回复
使用数据库操作类如DHelper,sqlhelper。到51aspx.com里看看,很多代码研究下
还可看看petshop
using(SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=newcn8b004;uid=sa;pwd=1234"))
{

}
flyhorse1010 2009-08-15
  • 打赏
  • 举报
回复
SqlDataAdapter dr=new SqlDataAdapter("Select * From [Table1];Select * From [Table2];Select * From [Tabel3];......",con);
DataSet ds=new DataSet();
dr.Fill(ds);
...这样子拼接多个select 语句
this.rptProduct.DataSource = ds.Tables["taocan"].DefaultView;
this.Datalist1.DataSource = ds.Tables["hz"].DefaultView;
this.Datalist2.DataSource = ds.Tables["mianshi"].DefaultView;
this.Datalist3.DataSource = ds.Tables["shuijiao"].DefaultView;
......后面的一样ok
cygmacel 2009-08-15
  • 打赏
  • 举报
回复
SqlConnection con = new SqlConnection("server=.\\sqlexpress;database=newcn8b004;uid=sa;pwd=1234");
string strSql=@"select * from taocan where tcxiaoqu='虹口小区' select * from hztc select * from mianshi ……";//这里值得注意的是你这些SQL代码里千万不要出现"*",这样的话,SQL执行会很慢
SqlDataAdapter dr1 = new SqlDataAdapter(strSql,con);
DataSet ds = new DataSet();
dr1.Fill(ds);
liu2009729 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ihandler 的回复:]
你把所有Select语句拼接为一个字符串,两两之间用;间隔,一次执行填充到DataSet
然后使用DataSet实例.Tables[索引]来作为数据显示控件的数据源

[/Quote]

能帮着写个例子吗?谢了~~
PandaIT 2009-08-15
  • 打赏
  • 举报
回复
你DBHelper类都米?

写一个Bysql(strint sql)方法公共的全取出来!
{
//code
}
IHandler 2009-08-15
  • 打赏
  • 举报
回复
你把所有Select语句拼接为一个字符串,两两之间用;间隔,一次执行填充到DataSet
然后使用DataSet实例.Tables[索引]来作为数据显示控件的数据源
fengjian_428 2009-08-15
  • 打赏
  • 举报
回复
1如果不是马上要用的数据源晚点取
2重复使用的可以用缓存
3用多线程分别取数据
alan0128 2009-08-15
  • 打赏
  • 举报
回复

62,056

社区成员

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

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

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

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