错误信息如 文章标题 所示。是在做一个分页查询时出的这个错误,错误很诡异,具体步骤如下:        string strWhere = "nclassName like '" + musicName + "' or musicName like '%"+musicName+"%'";
        protected void Page_Load(object sender, EventArgs e)
        {
                int recordCount = 0;
                //传入假参数,为了取得总数量,因为总数量在页面初始化时就要赋值
                this.GridView1.DataSource = MusicList_BLL.SelectDataTableByPage(_tblName, descid, _fldName, strWhere, 1,1,1, ref recordCount);
                this.GridView1.DataBind();
                AspNetPager1.RecordCount = recordCount;
        }        //再页面载入时\点击页数时会触发这事件,
        protected void AspNetPager1_PageChanged(object sender, EventArgs e)
        {  
            int recordCount = 0;
            this.GridView1.DataSource = MusicList_BLL.SelectDataTableByPage(_tblName, descid, _fldName, strWhere, 1, AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, ref recordCount);
            this.GridView1.DataBind();
        }为了让问题看起来方便,我就简化了传值赋值逻辑判断这些代码,SelectDataTableByPage方法是对的,参数descid,_fldName,这些值都是没有问题。在我第一次加载这个页面,比如搜索 张学友 的时候,会正常显示PageSize条记录,但当我点击下一页或者2,3,4,5.....页时,就报出超时信息。我设置断点跟踪了,两次走的步骤完全一样,唯一不同的就是第一次传入参数CurrentPageIndex为1,第二次为用户自己点的页面数,既然第一次正常显示了,代表传参及数据库查询都不存在问题,但为什么第二次传入CurrentPageIndex就报超时呢?当然所有参数都是正常传入。在网上搜索了相关问题的解决办法
web.config 已经设置,跟它无关,如果有关,第一次查询也不可能成功。<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900" />设置sqlcommond的timeout。这个也设置了,没效果(实质跟web.config配置效果一样)
设置sqlconnection 的 Connect Timeout。这个也设置了,依旧报错。有的人说查询复杂,给相应字段设置索引,这个也设置了,没效果。请问大侠们这大概什么原因啊, 实在是想不明白。

解决方案 »

  1.   

    有关闭
                SqlCommand cmd = new SqlCommand();
                //cmd.CommandTimeout = 1800;
                SqlConnection conn = new SqlConnection(connectionString);
                DataTable dt = new DataTable();
               
                try
                {
                    PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                    SqlDataAdapter sda = new SqlDataAdapter(cmd);
                    sda.Fill(dt);
                    conn.Close();
                    cmd.Parameters.Clear();
                    return dt;
                }
                catch
                {
                    conn.Close();
                    throw;
                }
      

  2.   

    把你的sql改一下吧 特别是模糊查询 如果是以前面为主的就去掉后面的%
      

  3.   

    找找你的放回中有没有用了SqlDataReader的。看有没有关闭。
      

  4.   


    用的SqlDataAdapter  ,已经关闭。二楼有我贴的代码。