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"];
SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
DataSet ds = new DataSet();
da.Fill(ds, "mytest");
dataGridView1.DataSource = ds.Tables["mytest"];
SqlDataAdapter da = new SqlDataAdapter("select * from test",conn);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0].DefaultView;
conn.Open();
SqlCommand command = new SqlCommand("select * from test",conn);
this.dataGridView1.DataSource = command.ExecuteReader();
conn.Close();
====================
command.ExecuteReader();
是不能作为 数据源的...要么用 DataSet 想上面的一样..要么把 ExecuteReader()填充到一个集合中去
还有 TO:bandylau 。。大家都有告诉他思路了。没看到大家还提示他一些关键的东西,一些要注意的东西吗?
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();