sql Server2000中car表里的记录显示在dataGrid控件中?我想在“查询”按钮的单击事件中,查询出car表里的记录,并显示在dataGrid控件中(不使用dataSet的方法)。//sqlConnection1已经连接到数据库了
string sqlSelect="Select * from Car";
this.sqlSelectCommand1=new SqlCommand(sqlSelect,this.sqlConnection1);
this.sqlConnection1.Open();
this.sqlSelectCommand1.CommandText=sqlSelect;
SqlDataReader dr=this.sqlSelectCommand1.ExecuteReader();
while (dr.Read())
{
这里改怎样写呢?
}

解决方案 »

  1.   

    从vs2005开始支持的一个新
    string sqlSelect="Select * from Car";
    this.sqlSelectCommand1=new SqlCommand(sqlSelect,this.sqlConnection1);
    this.sqlSelectCommand1.CommandText=sqlSelect;this.sqlConnection1.Open();DataTable dt = new DataTable();dt.Load(this.sqlSelectCommand1.ExecuteReader(CommandBehavior.CloseConnection));dataGridView1.DataSource = dt;
      

  2.   

    WinForm的DataGrid至少得有个IList放数据,Web的不知道
      

  3.   

    不只是DataSet可以作为数据源,只要实现了特定接口的就可以作为数据源绑定了。可以通过dr.Read()循环来将数据读入ArrayList等对象中,然后再绑定到DataGrid中
      

  4.   

    wqxhome(IcE):
    "可以通过dr.Read()循环来将数据读入ArrayList等对象中,然后再绑定到DataGrid中"----------------
    按照您的方法,我如下的修改了程序:string sqlSelect="Select * from Car";
    this.sqlSelectCommand1=new SqlCommand(sqlSelect,this.sqlConnection1);
    this.sqlConnection1.Open();
    this.sqlSelectCommand1.CommandText=sqlSelect;
    SqlDataReader dr=this.sqlSelectCommand1.ExecuteReader();//创建ArrayList对象
    System.Collections.ArrayList al = new System.Collections.ArrayList();
    //用循环将数据读入到ArrayList对象中
    while (dr.Read())
    {
    al.Add(dr["Int_CarId"].ToString());
    al.Add(dr["Str_CarName"].ToString());
    al.Add(dr["Str_CarUser"].ToString());
    al.Add(dr["Date_BuyDate"].ToString());
    }
    //将数据绑定到DataGrid中
    this.dataGrid1.SetDataBinding(al,"Car");但是运行时通不过。其中Int_CarId,Str_CarName,Str_CarUser,Date_BuyDate是car表的四个字段。请问:哪里出错了?
      

  5.   

    datagrid1.DataSource = sqlSelectCommand1.ExecuteReader();
    datagrid1.DataBind();
      

  6.   

    to: zhou410527(我为前途而担忧!) 在vs2005下,你可以利用System.Data.Command.DbDataRecord...using (SqlConnection conn = new SqlConnection())
    {
           conn.ConnectionString = "server=namhyukp4;database=northwind;uid=sa;pwd=";       SqlCommand cmd = new SqlCommand();
           cmd.Connection = conn;
           cmd.CommandText = "select * from employees";       conn.Open();
           SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);       ArrayList al = new ArrayList();
           foreach(System.Data.Common.DbDataRecord record in dr)
           {
                 al.Add(record);
           }
           dataGridView1.DataSource = al;
    }=========================
      

  7.   

    while (dr.Read())
    {
    al.Add(dr["Int_CarId"].ToString());
    al.Add(dr["Str_CarName"].ToString());
    al.Add(dr["Str_CarUser"].ToString());
    al.Add(dr["Date_BuyDate"].ToString());
    }上面这个程序段不附合逻辑。一般来讲,你最好在项目中增加一个类,简单些,比如是Class1吧。
    class Class1
    {   
       private int int_CarId;
       public int Int_CarId  //定义属性
       {
           get { return int_CarId; }
           set { int_CarId = value; }
       }   private string str_CarName;
       public string Str_CarName
       {
            get { return str_CarName; }
            set { str_CarName = value; }
       }    //...余下你自己写}然后
    while (dr.Read())
    {
        Class1 cls = new Class1();
        cls.Int_CarId = int.Parse(dr["Int_CarId"].ToString());
        cls.Str_CarName = dr["Str_CarName"].ToString();
        //...余下自己写吧
       
        al.Add(cls); //注意:是在列表里添加整个对象的引用,而不是一个行字段值。   
    }