protected void Page_Load(object sender, EventArgs e)
    {
            if (Request.QueryString["id"] != "" )
        {   
             SqlConnection con = new SqlConnection("Data Source=(local)\\SQLEXPRESS; Initial Catalog=stan; Integrated Security=True"); //创建连接
             con.Open(); //打开连接
             string strsql = "select * from news where id = '" + Request.QueryString["id"] + "'"; //查询数据
             SqlDataAdapter da = new SqlDataAdapter(strsql, con);
             DataSet ds = new DataSet(); //填充数据
             int count = da.Fill(ds, "table");
             if (count > 0)
              {
                Label1.Text = ds.Tables["table"].Rows[0]["title"].ToString(); //填充控件
                Label2.Text = ds.Tables["table"].Rows[0]["content"].ToString();      //填充控件
                Label3.Text = ds.Tables["table"].Rows[0]["author"].ToString(); //填充控件
                Label4.Text = ds.Tables["table"].Rows[0]["time"].ToString(); //填充控件
              }
             else
               { 
                  Response.Redirect("default.aspx"); //页面跳转
                }
         }
         else
             {    
                Response.Redirect("default.aspx");
             }  
    } ASP.NETlabel数据库

解决方案 »

  1.   

    咦,不对,你是怎么进入这个页面的,QueryString就没传值吧?
      

  2.   

    是因为da.fill一直返回值一直为0吧,至于为什么为空,一步一步往上找原因 比如数据库连接什么的
      

  3.   

    设置断点 看看count 是否大于0啊 这很简单啊
      

  4.   

    这个试过了。没用的,我改成&&或者||也都没有用
      

  5.   

    确定是 URL 传参?且参数名为 id ?如果是,那就用
    if (!String.IsNullOrEmpty(Request.QueryString["id"]))
    {
    }
    试试,如果还是执行 else 那么就是你的 Request.QueryString["id"] 没有任何值了。
      

  6.   

    你应该区分错误类型
    里面的else应该跳转到一个提示页面,外面的else,跳转到另外个页面,起码这样你知道是什么问题,把这个区分好再来问
    比如: else
                   { 
                      Response.Redirect("DBNull.html");  //起码这样你知道是什么问题
                    }
             }
             else
                 {    
                    Response.Redirect("no-pars.html");//参数有误的情况下
                 }  
        } //同时调用这种方法来判断URL参数比较保险
    #region 检查URL参数类型、URL参数转义protected void Page_Load(object sender, EventArgs e)
        {
            if (IsInt(Request.QueryString["id"]))
            {
                  //参数正常
            }
            else
            {
                //参数有误
            }
        }    /// <summary>
        /// 检查参数是否是数字类型
        /// </summary>
        /// <param name="queryStringID">Url参数</param>
        /// <returns></returns>
        public bool IsInt(string queryStringID)
        {
           
            bool result = false;
            if (string.IsNullOrEmpty(queryStringID))
            {
                result = false;
            }
            else 
            {
                Regex RegNumber = new Regex("^[1-9][0-9]*$");
                Match m = RegNumber.Match(queryStringID);
                if (m.Success)
                {
                     result = true;
                }
            }        return result;
        }
      

  7.   

    if (!String.IsNullOrEmpty(Request.QueryString["id"]))
    {
    }
    试试,如果还是执行 else 那么就是你的 Request.QueryString["id"] 没有任何值了。
      

  8.   

                 da.Fill(ds, "table");
                 if (ds.Tables.Count > 0)
      

  9.   

    改成 if (Request.QueryString["id"] != null ),我这两天也做过类似的,没问题!
      

  10.   

    我晕了,4个小时就解决这个问题,大哥你好歹也下个断点然后跟踪一下啊,你监控一下是没取到值还是什么。
    另外你代码里面有两个else,你也没说老是走哪个else啊,走第一个else表示你的request没取到值,你赶紧去看下你怎么传的是不是加id那个名字,如果走第二个else则去看下你的sql是否查询到值了,你去监测一下你的ds里面是不是有内容啊。
      

  11.   

    不是你急死了,是我急死了,问题都没描述清楚你叫大神们怎么去给你解决,另外你自己都知道一直走else那表示你自己就下了断点了,既然下了断点而不去跟踪调试,我真是急死了。
      

  12.   

    Request.QueryString["id"] 打印出来,看看到是什么
      

  13.   

    int count = da.Fill(ds, "table");
    改成这样,试看看
    da.Fill(ds, "table");
    int count = ds.Tables.Rows.Count;
      

  14.   

     if (Request.QueryString["id"].ToString() != "" )
      

  15.   

    确实是没有值回传过来,是我疏忽了,页面没有传值过来,count的值一直是空的,谢谢各位了,代码上没有什么问题