如果我用大量的数据,几万或几十万条, 用下面的方法来提取数据,就需要创建几万或几十万的对象,
我不清楚这样的方法是否可用?
还有没有其它更好的方法了? 
public ArrayList ExportData()  
        {  
            ArrayList UserList = new ArrayList();  
  
             
  
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserInfo.mdf;Integrated Security=True;User Instance=True"))  
            {  
                conn.Open();  
  
                using (SqlCommand cmd = conn.CreateCommand())  
                {  
                    cmd.CommandText = "SELECT * FROM UserInfo";  
  
                    using (SqlDataReader reader = cmd.ExecuteReader())  
                    {  
                        while (reader.Read())  
                        {  
                            User users = new User();  
                            users.Id = (int)reader[0];  
                            users.Username = (string)reader[1];  
                            users.Sex = (int)reader[2];  
                            users.Age = (int)reader[3];  
                            users.Address = (string)reader[4];  
  
                            UserList.Add(users);  
                        }  
                    }  
  
                }  
  
            }  
  
            return UserList;  
        }  
    }  
}  

解决方案 »

  1.   

    这个方法挺好,没啥好说的了
    你自定义一个Collection<Users>也差不多
    你可以用List<Users>会快点
    如果用DataTable+DataAdapter代码少点儿,可以只创建一个DataTable,其它数据对象不用自己创建
      

  2.   


    public DataTable ExportData()  
            {  
                DataTable UserTable = new DataTable(); 
                using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\UserInfo.mdf;Integrated Security=True;User Instance=True"))  
                {  
                    using (SqlCommand cmd = conn.CreateCommand())  
                    {  
                        cmd.CommandText = "SELECT * FROM UserInfo";  
                        using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))  
                        {  
                              SqlDataAdapter.Fill(UserTable)
                         }  
                    }  
                }  
                return UserTable;  
            }  
        }  
    }这算对象少不?
      

  3.   

    1. ArrayList 换成List 甚至可以换成 Dictionary,有时候我们需要从UserList里快速查找用户
    2. User是class还是struct? 如果User只是用于传输数据,可以用struct
      

  4.   

    换成Struct对直接用DataSource属性绑定DataView等控件就麻烦了
      

  5.   

    ArrayList 我基本用IList<T> 或者 List<T>
      

  6.   


    不建议直接使用DataSet,DataTable的
    首先,他们的体积太多
    再次,调用时需要操作字段名或者索引,没有使用属性来得方便
      

  7.   

    如果不是用于支持数据绑定的控件显示(GirdView、ComboBox等),我也不建议用DataTable,更不建议主动拉进DataSet。
    不过用来查询和快速定位的话,DataTable和DataSet还是提供了很多方法,例如Select、Find等,这样你就不用自己去写这些方法了。
      

  8.   

    感谢各位。感谢2楼,我就是需要一个DataTable, 然后做为数据源在DataGridView上面显示数据,等我回家试一下。
    User是一个class.我只是想从数据库读取数据,然后用DataGridView控件来显示数据,欢迎大家提出宝贵意见。
    http://blog.csdn.net/shylx123/article/details/7935922
      

  9.   


    感谢呀, 我就想要一个DataTable来做为一个数据源,在DataGridView控件上显示数据。
    回家试一下,用你这个方法,我还省得再去New 对象存储数据,再转换成DataTable.