当前位置:编程学习 > C#/ASP.NET >>

读取大数据的时候,可否用new 新对象来存储数据?

如果我用大量的数据,几万或几十万条, 用下面的方法来提取数据,就需要创建几万或几十万的对象,
我不清楚这样的方法是否可用?
还有没有其它更好的方法了? 




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;  
        }  
    }  
}  



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

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;  
        }  
    }  
}

这算对象少不? --------------------编程问答-------------------- 1. ArrayList 换成List 甚至可以换成 Dictionary,有时候我们需要从UserList里快速查找用户
2. User是class还是struct? 如果User只是用于传输数据,可以用struct



--------------------编程问答--------------------
引用 3 楼  的回复:
1. ArrayList 换成List 甚至可以换成 Dictionary,有时候我们需要从UserList里快速查找用户
2. User是class还是struct? 如果User只是用于传输数据,可以用struct

换成Struct对直接用DataSource属性绑定DataView等控件就麻烦了 --------------------编程问答-------------------- ArrayList 我基本用IList<T> 或者 List<T> --------------------编程问答--------------------
引用 4 楼  的回复:
引用 3 楼  的回复:
1. ArrayList 换成List 甚至可以换成 Dictionary,有时候我们需要从UserList里快速查找用户
2. User是class还是struct? 如果User只是用于传输数据,可以用struct

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


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


--------------------编程问答--------------------
引用 6 楼  的回复:
引用 4 楼 的回复:

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

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


不建议直接使用Data……

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

感谢2楼,我就是需要一个DataTable, 然后做为数据源在DataGridView上面显示数据,等我回家试一下。
User是一个class.

我只是想从数据库读取数据,然后用DataGridView控件来显示数据,欢迎大家提出宝贵意见。
http://blog.csdn.net/shylx123/article/details/7935922 --------------------编程问答--------------------
引用 2 楼  的回复:
C# code

public DataTable ExportData()  
        {  
            DataTable UserTable = new DataTable(); 
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDb……


感谢呀, 我就想要一个DataTable来做为一个数据源,在DataGridView控件上显示数据。
回家试一下,用你这个方法,我还省得再去New 对象存储数据,再转换成DataTable.
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,