下面是我的代码:       
using (SqlCommand command = new SqlCommand(sqlcmd, con))
            {
                DataTable dt = new DataTable();
                try
                {
                    if (con.State != ConnectionState.Open) { con.Open(); }
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        dt.Load(reader);
                        return dt;
                    }
                }
                finally
                {
                    if (con.State == ConnectionState.Open) { con.Close(); }
                }
            }
目前知道出问题的地方是dt.Load(reader);这一句。但是不知道为什么,reader里面的值存不到datatable里面去。

解决方案 »

  1.   


    用sqlDataAdapter 
    和dataset
    来填充
      

  2.   

    仅这段代码应该没错,可能别的代码有错。会不会select出0条记录?
      

  3.   

    using (SqlCommand command = new SqlCommand(sqlcmd, con))
      {
      DataTSet ds = new DataTable();
      try
      {
      if (con.State != ConnectionState.Open) { con.Open(); }
      using (SqlDataReader reader = command.ExecuteReader())
      {
      reader.Fill(ds,"aa");
      return ds;
      }
      }
      finally
      {
      if (con.State == ConnectionState.Open) { con.Close(); }
      }
      }
    用DataSet.Tables[0]   或者DataSet.Tables["aa"]就是你想要的dt
      

  4.   

    这行打错了  是DataSet ds = new DataSet();
      

  5.   


    你的这段代码和我的有什么区别么? dt.Load(reader); 
    我的就是这段不能用,reader不能填充到datatable中去。
      

  6.   


    没有错啊。。我把dt.Load(reader);换成循环一个一个输出reader中的值是可以的。但是要直接导进去就不行了。