ExecuteReader是一行一行的读数据,无法直接返回结果集,可以在读的时候,将结果放到一个DateTable中,然后做为数据源绑定到dataGridView,这样不如直接用SqlDataAdapter直接填充到DateTable作数据源了,基本是这样SqlConnection conn = ConDB.CreateConnection();
SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
DataSet ds = new DataSet();
da.Fill(ds, "mytest");
dataGridView1.DataSource = ds.Tables["mytest"];

解决方案 »

  1.   

    SqlConnection conn = ConDB.CreateConnection();
    SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    dataGridView1.DataSource = ds.Tables[0].DefaultView;
      

  2.   

    SqlConnection conn = ConDB.CreateConnection();
                conn.Open();
                SqlCommand command = new SqlCommand("select * from test",conn);
                this.dataGridView1.DataSource = command.ExecuteReader();
                conn.Close();
    ====================
    command.ExecuteReader();
    是不能作为 数据源的...要么用 DataSet 想上面的一样..要么把 ExecuteReader()填充到一个集合中去
      

  3.   

    lxcnn(过客) 正解。不过也可以用DATATABLE
    还有 TO:bandylau  。。大家都有告诉他思路了。没看到大家还提示他一些关键的东西,一些要注意的东西吗?
      

  4.   

    如果不用泛型。可以这样:System.Collections.ArrayList al = new System.Collections.ArrayList();
    using (SqlConnection conn = new SqlConnection("server=localhost;database=northwind;uid=sa;pwd="))
    {
                SqlCommand cmd = new SqlCommand("select * from Customers", conn);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                if(reader.HasRows)
                {
                    foreach(System.Data.Common.DbDataRecord dbr in reader)
                    {
                        al.Add(dbr);
                    }
                }
    }
    GridView1.DataSource = al;
    GridView1.DataBind();