首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请专家们指点以下程序代码由哪些弊病 [已结贴,结贴人:loffer]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 20:44:04 楼主
    这是别人帮忙做的一个用户管理系统中的一个查询后的结果页面,因为有些问题,几个用户同时访问有些慢,我稍加了修改,设置分页,因为对.net是初学能力有限,所以这段代码运行有错误提示:metadata不能读取还是不能查询(忘了,呵呵)ConnClass.cs 里是一些数据访问的sqldata代码,getdr是一个返回datareader的
    代码有点多超过限制了,去掉了分页部分,现在问题在数据读取里所以分页就先不放了
    int PageSize=20,CurrentPage=1,AllPageCount=0,PageCount=0;
    string Result_SearchBar_Str="",Search_QueryString="";
    DateTime Starttime,Endtime;
    Starttime = new DateTime(1900,01,01);
    Endtime = new DateTime(1900,01,01);
    if(Request.Params["Start_time"]!=null) Starttime = Convert.ToDateTime(Request.Params["Start_time"]);
    if(Request.Params["End_time"]!=null) Endtime = Convert.ToDateTime(Request.Params["End_time"]);

    if(Request.QueryString["CurrentPage"]!=null)
    {
    CurrentPage = Convert.ToInt32(Request.QueryString["CurrentPage"].ToString());
    }
    bool Flag=false;
    string UserName="",Town="",Village="",ResultSel="",ResultInfoSel="";
    StringBuilder ResultString = new StringBuilder();
    StringBuilder ResultInfoString = new StringBuilder();
    StringBuilder Result_SearchBar = new StringBuilder();
    string SqlString = "Select  Top "+PageSize+" * From users Where id > 0 ";
    string Sql_AllPageCount = "select count(*) as num From users Where (id > 0) ";
    string Sql_SubSearch = "select top "+PageSize*(CurrentPage-1)+" id from users Where id > 0 ";

    ResultInfoSel = "根据";
    if(Request.Params["Name"]!=null)
    {
    UserName=Request.Params["Name"].ToString().Trim();
    Search_QueryString = Search_QueryString + "&Name=" + UserName;
    SqlString = SqlString + " and name Like '%"+UserName+"%'";
    Sql_AllPageCount = Sql_AllPageCount + " and (name Like '%"+UserName+"%')";
    Sql_SubSearch = Sql_SubSearch  + " and name Like '%"+UserName+"%'";
    ResultInfoSel = ResultInfoSel + "用户名为:&nbsp; <font color=red>"+UserName+"&nbsp; </font> <font color= #000000  >, </font>";
    Flag = true;
    }
    if(Request.Params["Town"]!=null)
    {

    Town=Request.Params["Town"].ToString().Trim();
    string sqltown = "select * from town where id=" +Town;
    string Xianzhen = "";
    SqlDataReader myReader = ConnClass.getdr(sqltown);
    if(myReader.Read())
    Xianzhen = myReader["town"].ToString();
    Search_QueryString = Search_QueryString + "&Town=" + Town;
    SqlString = SqlString + " and town=" + " '"+Town+" '";
    Sql_AllPageCount = Sql_AllPageCount +" and town=" + " '"+Town+" '";
    Sql_SubSearch = Sql_SubSearch  +" and town=" + " '"+Town+" '";
    ResultInfoSel = ResultInfoSel + " <font color=#000000 >乡镇为:&nbsp; </font> <font color=red>"+Xianzhen+"&nbsp; </fond> <font color= #000000  >, </font>";
    myReader.Close();
    Flag = true;
    }
    if(Request.Params["Village"]!=null)
    {
    string Cunzhuang="";
    Village=Request.Params["Village"].ToString().Trim();
    string sqlvillage = "select * from village where id=" +Village;
    SqlDataReader myReader1 = ConnClass.getdr(sqlvillage);
    if(myReader1.Read())
    Cunzhuang = myReader1["village"].ToString();
    Search_QueryString = Search_QueryString + "&Village=" +  Village;
    SqlString = SqlString +" and village=" + " '"+Village+" '" ;
    Sql_AllPageCount = Sql_AllPageCount + " and village=" + " '"+Village+" '" ;
    Sql_SubSearch = Sql_SubSearch  + " and village=" + " '"+Village+" '" ;
    ResultInfoSel = ResultInfoSel + " <font color=#000000 >村庄为: </font>&nbsp; <font color=red>"+Cunzhuang+"&nbsp; </fond> <font color= #000000  >, </font>";
    myReader1.Close();
    Flag = true;
    }
    if((Starttime.ToString()!="1900-1-1 0:00:00")&(Endtime.ToString()!="1900-1-1 0:00:00"))
    {
    Search_QueryString = Search_QueryString + "&Start_time="+System.DateTime.Parse(Starttime.ToString()).ToString("yyyy-mm-dd") + "&End_time="+System.DateTime.Parse(Endtime.ToString()).ToString("yyyy-mm-dd");
    SqlString = SqlString + " and (starttime between '"+Starttime+"' and '"+Endtime+"') ";
    Sql_SubSearch = Sql_SubSearch + " and (starttime between '"+Starttime+"' and '"+Endtime+"') ";
    Sql_AllPageCount = Sql_AllPageCount + " and (starttime between '"+Starttime+"' and '"+Endtime+"') ";
    ResultInfoSel = ResultInfoSel + " <font color=black>开户时间为 </font> <font color=red>"+System.DateTime.Parse(Starttime.ToString()).ToString("yyyy-mm-dd")+" </font>至 <font color=red>"+System.DateTime.Parse(Endtime.ToString()).ToString("yyyy-mm-dd")+" </font>,";
    Flag = true;
    }
    ResultInfoSel = ResultInfoSel +" <font color=#000000>查询到下列用户 </font>";
    if( !Flag )
    {
    ResultInfoSel = " <font color= #000000 >未选择查询条件,查询到下列用户 </font>";

    }
    Sql_SubSearch = Sql_SubSearch + " order by id";
    SqlString = SqlString+" and ID not in( "+ Sql_SubSearch + "  )  "+" order by id";

    //计算记录条数,避免重复计算
    if(Request["AllPage"]==null)
    {
    SqlDataReader myReader2 = ConnClass.getdr(Sql_AllPageCount);
    if(myReader2.Read())
                                                AllPageCount = Int32.Parse(myReader2["num"].ToString());
    myReader2.Close();
    }
    else
    {
    AllPageCount = Int32.Parse(Request["AllPage"]);
    }
    Search_QueryString = Search_QueryString + "&AllPage="+AllPageCount;

    SqlDataReader returnReader = ConnClass.getdr(SqlString);
    int RecorderCount=1;

    while(returnReader.Read())//提取数据
    {
    string sqltown1 = "select *  from town where id="+returnReader["town"];
    SqlDataReader myReader3 = ConnClass.getdr(sqltown1);
    string sqlvillage1= "select *  from village where id="+returnReader["village"];
    SqlDataReader myReader4 = ConnClass.getdr(sqlvillage1);
    if(returnReader["userstate"].ToString()=="F")
    {
    ResultSel = ResultSel +" <tr valign='top'onclick=ChargeDetail('"+ returnReader["Id"].ToString() +"') > <TD colspan=9 onmouseover=this.className='bg2'  onmouseout=this.className='bg1'  style='cursor:hand;'  height=20  bgcolor=#f5f5f5  valign=top > <table> <tr> <td width=45 align=center >"+(RecorderCount + PageSize*(CurrentPage-1))+" </td> <td width=75 align=center >"+returnReader["name"].ToString()+" </td> <td width=75 align=center >"+myReader3["town"].ToString()+" </td> <td  width=75 align=center >"+myReader4["village"].ToString()+" </td> <td width=75 align=center >"+returnReader["mph"].ToString() +" </td> <td  width=75 align=center >"+returnReader["startfee"].ToString()+"元 </td> <td width=75 align=center > <font color= red >停用 </font> </td> <td width=75 align=center >"+returnReader["czfp"].ToString()+" </td> <td width=150 align=center >"+ DateTime.Parse(returnReader["starttime"].ToString()).ToString("yyyy-MM-dd") +" </td> </tr> </table> </TD> </tr>";
    }

    if(returnReader["userstate"].ToString()=="T")
    {
    ResultSel = ResultSel +" <tr valign='top'onclick=ChargeDetail('"+ returnReader["Id"].ToString() +"') > <TD colspan=9 onmouseover=this.className='bg2'  onmouseout=this.className='bg1'  style='cursor:hand;'  height=20  bgcolor=#f5f5f5  valign=top > <table> <tr> <td width=45 align=center >"+(RecorderCount + PageSize*(CurrentPage-1))+" </td> <td width=75 align=center >"+returnReader["name"].ToString()+" </td> <td width=75 align=center >"+myReader3["town"].ToString()+" </td> <td  width=75 align=center >"+myReader4["village"].ToString()+" </td> <td width=75 align=center >"+returnReader["mph"].ToString() +" </td> <td  width=75 align=center >"+returnReader["startfee"].ToString()+"元 </td> <td width=75 align=center > <font color= blue >正常使用 </font> </td> <td width=75 align=center >"+returnReader["czfp"].ToString()+" </td> <td width=150 align=center >"+ DateTime.Parse(returnReader["starttime"].ToString()).ToString("yyyy-MM-dd") +" </td> </tr> </table> </TD> </tr>";
    }
    myReader3.Close();
    myReader4.Close();
    RecorderCount++;
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 20:50:441楼 得分:0
    别掉下去啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-29 20:53:122楼 得分:20
    那么一大串....,怎么还直接输出html代码的,为什么不用控件
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 06:48:593楼 得分:0
    是不是换成datagrid输出可以提高速度,但是datagrid 是如何 进行打印的呢,因为这个程序里我发现打印是输出到excel的,怎么从控件输出到excel呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 07:03:414楼 得分:0
    早上起来看帖子,希望上班后有人再帮忙,毕竟要5一了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 19:36:395楼 得分:0
    结帖了,没有人理,也是的,上面的代码太垃圾,全部更换
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-01 20:13:286楼 得分:0
    该回复于2008-05-04 10:22:58被管理员删除
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved