博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net中Dataset数据集的认识
阅读量:3608 次
发布时间:2019-05-20

本文共 1792 字,大约阅读时间需要 5 分钟。

        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://hkpzn.baihongyu.com/

你可能感兴趣的文章
android
查看>>
Android——广播
查看>>
Android——内容提供者
查看>>
Android——网络编程
查看>>
Android——服务
查看>>
HarmonyOS工作原理解析
查看>>
数据库事务的四个特性及含义
查看>>
主题模型探讨
查看>>
stop word理解及超全的停用词表
查看>>
同义词挖掘的一些常用方法 及同义词替换程序
查看>>
用户画像全面精析
查看>>
对话系统分析与展望
查看>>
基于VSM的命名实体识别、歧义消解和指代消解
查看>>
算术运算符和比较运算符
查看>>
复制带随机指针的链表
查看>>
【SpringMVC】十、SSM整合入门
查看>>
学习Java Socket网络编程(三)
查看>>
Java方法参数之参数传递方式
查看>>
mysql安装和配置ODBC驱动,然后tableau链接MySQL数据库
查看>>
物联网之智能灯开发-前言
查看>>