private void FillDataTable()
{        DataTable _dtProducts = new DataTable();
        DataRow dr;        _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int)));
        _dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string)));
        _dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));        string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
        SqlConnection cn = new SqlConnection(conn);
        string str = "select * from Products";
        SqlCommand cmd = new SqlCommand(str, cn);
        cn.Open();
        SqlDataReader DR = cmd.ExecuteReader();        if (DR.Read())
        {
            dr = _dtProducts.NewRow();
            dr[0] = DR["ProductID"];
            dr[1] = DR["ProductName"];
            dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000)
            _dtProducts.Rows.Add(dr);
        }        DR.close();
        cn.Close();
}
编辑时的提示:无法找到列 5,但在north数据库里的Products的第6列有的呀
不知道错在那里,以前用dataset比较多,熟悉datatable的请不吝赐教!!

解决方案 »

  1.   

        public static DataTable FillDataTable()
        {
            string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false";
            string str = "select * from Products";         using (SqlConnection conn = new SqlConnection(conn))
            {
                SqlDataAdapter da = new SqlDataAdapter(str, conn);
                da.SelectCommand.CommandType = CommandType.Text;
                da.SelectCommand.ExecuteReader();
                DataTable tbl = new DataTable();
                da.Fill(tbl);
                return tbl;
            }
        }这样填允 DataTable
      

  2.   

    private DataTable  FillDataTable() 
    {         DataTable _dtProducts = new DataTable(); 
            DataRow dr;         _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int))); 
            _dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string))); 
            _dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));         string conn = "server=(local);database=northwind;user  id=sa;password=password;Trusted_Connection=false"; 
            SqlConnection cn = new SqlConnection(conn); 
            string str = "select * from Products"; 
            SqlCommand cmd = new SqlCommand(str, cn); 
            cn.Open(); 
           SqlDataAdapter da = new SqlDataAdapter(cmd);
            ///DataTable dt=new DataTable("name")
            da.Fill( _dtProducts );
            return _dtProducts 
    }
      

  3.   

    TO:ZPCODER,but 3Q
    还是不行,提示,"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"
      

  4.   

    private void FillDataTable() 
    {         DataTable _dtProducts = new DataTable(); 
            DataRow dr;         _dtProducts.Columns.Add(new DataColumn("ProductID", typeof(int))); 
            _dtProducts.Columns.Add(new DataColumn("ProductName", typeof(string))); 
            _dtProducts.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));         string conn = "server=(local);database=northwind;user id=sa;password=password;Trusted_Connection=false"; 
            SqlConnection cn = new SqlConnection(conn); 
            string str = "select * from Products"; 
            SqlCommand cmd = new SqlCommand(str, cn); 
            cn.Open(); 
            SqlDataReader DR = cmd.ExecuteReader();         if (DR.Read()) 
            { 
                dr = _dtProducts.NewRow(); 
                dr[0] = DR["ProductID"]; 
                dr[1] = DR["ProductName"]; 
                //dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000) 
                dr[2] = DR["UnitPrice"]; 
                _dtProducts.Rows.Add(dr); 
            }         DR.close(); 
            cn.Close(); 

    应该这样,楼主可能是大意了。
      

  5.   

    to :xiaogang107 ,dr[5]//我要的是表里的第6列数据,so...
      

  6.   

    绑定控件可以直接用DataReader绑定的。楼主
      

  7.   

    dr = _dtProducts.NewRow(); 
    -----------〉
    _dtProducts只有3列啊,怎么会有第五列,所以应该是dr[2]=DR["UnitPrice"];  dr[5] = DR["UnitPrice"]; //但在northwind数据库里的Products的第6列 (sql2000) --------〉DR["UnitPrice"]这个已经根据字段取值了,不用管是第几列