我想在一个FORM中放一个LABEL,想通过单击按钮实现在LABEL中显示SQL中某表的数据
用getvalue()方法却总是提示错误,想问一下该怎么解决..

解决方案 »

  1.   


    try
                {
                    string connstr = @"server=XXXX;database=YYYY;Trusted_Connection=true";
                    //string sSql = "SELECT * FROM tabYYY";
                    using (SqlConnection conn = new SqlConnection(connstr))
                    {
                        conn.Open();
                        using (SqlCommand cmd = new SqlCommand("SELECT * FROM tabYYY", conn))
                        {                        using (SqlDataReader dr = cmd.ExecuteReader())
                            {
                                if (dr.HasRows)
                                {
                                    System.Text.StringBuilder strb = new StringBuilder();
                                    for (int i = 0; i < dr.FieldCount; i++)
                                    {
                                        strb.Append(string.Format("{0}+", dr.GetName(i)));
                                    }
                                    label1.Text = strb.ToString();
                                    
                                }
                            }
                        }
                    }
                }
                catch (Exception s)
                {
                    label1.Text = s.ToString();
                }
    具体是这样,应该怎么改呢.
      

  2.   

    代码写错了,FOR循环内应该是for (int i = 0; i < dr.FieldCount; i++)
                                    {
                                        strb.Append(string.Format("{0}+", dr.GetValue(i)));
                                    }
      

  3.   

    在没有任何数据时进行无效的读取尝试
    同样的代码在ASP.NET网页中就可以正常运行并且得出结果,Response.Write()就可以在页面上现实查询结果,但是挪到C# FORM上想在LABEL中显示就是那个错误
      

  4.   

    dr.HasRows这个属性只是判断是否有数据,你要想得到数据还必须调用一下dr.Read()方法让它向前一下才行
      

  5.   

    你都没有对数据读呀,你FOR哪里嘛
    if (dr.HasRows)只是查有没有行而已,
    dr.GetName(i)只是当前行的字段i的数据,
    没看你的读的操作呀
      

  6.   

      dr.read()  ;                           
     for (int i = 0; i < dr.FieldCount; i++)
       {
                                        strb.Append(string.Format("{0}+", dr.GetName(i)));
     dr.read() ;
       }
    不知道这样行不行
    没试过
      

  7.   

    while(dr.Read())
    {
      ...
    }