ADO.NET中的DataSet和DataAdapter
DataSet和DataTable
DataSet是一个数据集合,存储在内存中,算是一个临时的数据库。
个人觉得,不是太常用了,DataTable或者直接用List<model>存数据比这个好。
还是也说一下使用方法吧。
DataSet ds =new DataSet("school"); DataTable dt = new DataTable("stu"); dt.columns.Add("列名",typeof(string));
//注意DataRow dr =new DataRow(); 不能这样用,为什么呢?看下面绿字
/*
DataRow的构造方法是 protected internal的,你是调用不到的。
但是跟DataRow同一个程序集的 DataTable可以调。
*/
DataRow dr = dt.NewRow(); dr["列名"] ="xxx"; dt.Rows.Add(dr); ds.Tables.Add(dt);
DataAdapter
该类是一个适配器模式的应用。那么这个适配器究竟适配了什么呢?
DataAdapter适配了DataTable和DataReader返回值的适配。
string conn =""; //连接字符串 string sql =""; //sql语句 /*DataAdapter是对 Connection、Command、以及DataReader的封装 */ DataAdapter da =new DataAdapter(sql,conn); DataTable dt =new DataTable(); /* *****说明****** 1. 先构造好列,再填充的话,会提高效率。 2. Fill(0,10,dt);是一种分页方式,适用于小项目。 去一页,读全部! */ da.Fill(0,10,dt);
推荐使用DataReader
1.一种常用获取表的方式
//简写哈,简写 DataSet ds =new DataSet(); DataAdapter da =new DataAdapter(SQL语句,连接字符串) da.Fill(ds); //其实,真的做项目,这种方式获取表并不推荐。 DataTable dt =ds.Tables[0];2.推荐做法
//还是简写哈,简写 using(Connection conn =new Connection("连接字符串")) { using(Command cmd =conn.CreateCommand()) { using(DataReader reader = cmd.ExecuteReader()) { DataTable dt =new DataTable(); dt.Load(reader); } } }
DataSet在何种情况下使用?
1.在C/S模式下
在C/S模式下使用DataSet。
2.在B/S模式下
在B/S模式下使用DataSet。B/S模式下(ASP.NET)使用DataSet,有1000个请求,
Web服务器内存中就会有1000个DataSet。是不是要用,还是自己取舍。
作者:大黑兔
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.