码迷,mamicode.com
首页 > Web开发 > 详细

.net中Dataset数据集的认识

时间:2015-04-01 12:44:24      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

        DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。您还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性。

        其实个人对DataSet的认识还并不是很深,只最近在.net的开发中研究了下。在开发过程中,我们可以通过DataAdapter使用数据源中的数据生成和填充 DataSet 中的每个DataTable,DataAdapter的fill方法我们使用较多的2种填充数据集的重载方法:fill(DataSet);     fill(Dataset,TableName); 

第一种情况:

       对同一个对象DataSet我们多次执行fill(DataSet)时,每次的查询结果都会填充到默认表“table0”中,后面的查询结果中,如果列名相同,就会和之前的列合并,如果不同,则在“table0”表中追加该列。对于查询的数据记录行的处理,和列的处理相同。比如:

      DataSet ds = new DataSet();

       MySQLDataAdapter mda1 = new MySQLDataAdapter(string.Format(”select user_id from users where nick=’xiaoju12′”), conn);

       MySQLDataAdapter mda2 = new MySQLDataAdapter(string.Format(”select key_id from base_info where user_id=’15703140′”), conn);

      mda1.fill(ds);

     mda2.fill(ds);

     此时ds的结构是这样的  

    ds.Tables[0].Rows[0]["user_id"].ToString()=1 , ds.Tables[0].Rows[0]["key_id"].ToString()=null;

    ds.Tables[0].Rows[1]["user_id"].ToString()=null , ds.Tables[0].Rows[1]["key_id"].ToString()=1;

    这样其实是不利于我们多表查询后DataSet数据集的操作,因为有些select语句的执行结果是未知的,所以要把我们要的数据精确定位到“table0”中rowid也就非常困难,这样DataSet数据集的操作也就非常不方便了。

第二种情况:

         对同一个对象DataSet我们多次执行fill(DataSet,TableName)时,只要DataTable不一样,每次的查询结果就会填充到指定的表名“TableName”中,这样不同的表的查询结果放到不同的表中,非常便于我们对查询结果进行定位并处理。

        DataSet ds = new DataSet();

       MySQLDataAdapter mda1 = new MySQLDataAdapter(string.Format(”select user_id from users where nick=’xiaoju12′”), conn);

       MySQLDataAdapter mda2 = new MySQLDataAdapter(string.Format(”select key_id from base_info where user_id=’15703140′”), conn);

      mda1.fill(ds,”users”);

     mda2.fill(ds,”base_info”);

     此时ds的结构是这样的 

     ds.Tables["users"].Rows[0]["user_id"].ToString()=1;

     ds.Tables["base_info"].Rows[0]["key_id"].ToString()=1;

     所以对于同一个DataSet数据集,如果只涉及一张表的操作时,fill(DataSet)方法简洁便利。但如果涉及多张表的操作时,建议使用fill(DataSet,DataTable)方法,在多张表之间切换,数据定位准确、简单。

原文:http://blog.csdn.net/phphot/article/details/4049827

.net中Dataset数据集的认识

标签:

原文地址:http://www.cnblogs.com/ihibin/p/4383265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!