说说DataSet

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

        DataSet对象在ADO.NET中的地位就像RecordSet对象在ADO中的地位一样重要。它是ADO.NET中的核心概念。有了DataSet之后,就可以轻而易举的实现与数据库的无连接模式。而且DataSet还可以屏蔽各种不同的数据源之间的差异,为程序员提供一个统一的编程接口。

        DataSet可以理解为内存中的数据库。这是因为在一个DataSet对象中包含了一个数据库系统中所应有的一切内容。DataSet对象可以支持多张表,表之间的关系和数据约束等,在DataSset对象中有若干个集合,比如Tables,这个集合就可以代表一个数据库中的多张表。又如Relations集合,它可以代表一个数据库中的表间关系。

一、DataSet的组成

Tables对象

       在DataSet中有一个数据表的集合Tables,其成员的数据类型为System.DataTable。一个DataSet可以包含多个DataTable。一个DataTable可以很好的表示一个数据库中的表,它有两个集合:columns和rows。其成员的数据类型分别为System.DataColumn和System.DataRow。这两个集合分别用于表示一个表的列和行。

       在ADO的Recordset对象中,访问一个表的不同记录是使用RecordSet对象MoveNext、MoveFirst等方法。现在有了DataSet对象中的Rows集合,就可以更加方便的访问一个数据表的不同记录。

       不但如此,还可以在内存中使用代码向一个DataSet对象添加或者删除DataTable,或者向一个DataTable对象中添加或者删除DataRow或者DataColumn。

Relations对象

       当一个DataSet对象中的表之间存在关系时,就可以使用DataRelation对象来表达这些关系。这些DataRelation对象就形成了一个Relations集合。

       Relations集合体现了各个表之间的约束关系,即主码—外码关系。当一个由外码的表的记录被更新时,如果不满足主码—外码的约束关系,这个更新操作就会失败。

ExtendedProperties对象

       在这个对象中可以定义一些DataSet对象扩展的属性,比如密码、更新时间等。

二、DataSet的使用

        DataSet其实就是数据集,上边已经说过DataSet是把数据库中的数据映射到内存缓存中的所构成的数据容器,对于任何数据源,它都提供一致的关系编程模型。在DataSet中既定义了数据表的约束关系以及数据表之间的关系,还可以对数据表中的数据进行排序等。DataSet使用方法一般有三种:

        1、  把数据库中的数据通过DataAdapter对象填充DataSet

        2、  通过DataAdapter对象操作DataSet实现更新数据库

        3、  把XML数据流或文本加载到DataSet中。

        下面详细说书偶上面三种方法的具体实现。

        1、  把数据库中的数据通过DataAdapter对象填充DataSet:

        在这里应该先掌握一个重要的成员——数据提供者(Data Provider),在这些数据提供者中都有一个DataAdapter类,例如:在The SQL Server.NET Framework数据提供者中是SqlDataSAdapter类。通过这个DataAdapter就能够实现从数据库中检索数据并填充DataSet中的表。

        DataAdapter填充DataSet的过程分为两步:首先通过DataSdapter的SelectCommand属性从数据库中检索出需要的数据。SelectCommand其实就是一个Command对象。然后再通过DataAdapter的Fill方法把检索出来的数据填充DataSet

        下面使用The SQL Server.NET Data Provider中的SqlDataAdapter填充DataSet的具体实现方法(C#,数据库为Charge):

       

SqlConnection sqlConnection1=new SqlConnection("server=WBX-PC;database=charge_sys;uid=sa;pwd=123;");
//创建数据连接
SqlCommand selectCMD=new SqlCommand("select * from User_Info where UserID='" & User.userID & "'",sqlConnection1);
//创建并初始化SqlCommand对象
SqlDataAdapter sqlDataAdapter1=new SqlDataAdapter();
sqlDataAdapter1.SelectCommand=selectCMD;
sqlConnection.Open();
//创建SqlDataAdapter对象,并根据SelectCommand属性检索数据
DataSet dsDataSet1=new DataSet();
sqlDataAdapter1.fill(dsDataSet1,"User_Info");
//使用SqlDataAdapter的Fill方法填充DataSet
sqConnection.Close();
//关闭数据库连接








        
将多个DataTable添加到指定的DataSet 将多个DataTable添加到指定的DataSet中 如何将多个DataTable添加到指定的DataSet中 事件起因:从数据库中,查询多个dataTable,现在想一下子返回多个table,所以就想到用DATASET,遇到下面的两个现象,现在记录下,做个参考。DataSet ds = new DataSet();//创建数据集DataTable dt1 = BIZ. Get 阅读详情

相关推荐

深度学习dataset等概念

反向传播是深度学习模型训练的核心步骤之一,它通过计算损失函数相对于模型参数的梯度,来更新这些参数。是 Python 的内置函数,用于将一个可遍历的数据对象(如列、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。函数会自动更新模型参数。具体来说,它会遍历所有参数,并使用优化器的更新规则(如SGD的权重衰减、Adam的梯度平方平均等)来更新每个参数。这段代码的用途是在训练深度学习模型时,通过反向传播和优化步骤,逐步调整模型参数,以最小化损失函数,从而提高模型的预测性能。

小泽爱刷题的博客 1707

C#dataset存放多张

在C#中用同一个dataset保存从数据库中取出的多张: cmd.CommandText = "select * from table1;"; NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd); //实例化一个类,它用于连接C#与数据库,并执行cmd语句且将结果缓存到适配器中 DataSet thedataset = new DataSet()

韶光 3563

Debugger DataSet 调试时查看DataSet

 http://edn.embarcadero.com/article/40268 Delphi 2010 Feature Highlight - Debugger Visualizers

ksrsoft的专栏 3427

DataSet类(1)

介绍DataSet类基础知识

A2000613的博客 1203

PyTorch基础之数据模块Dataset、DataLoader用法详解(附源码)

PyTorch基础之数据模块Dataset、DataLoader用法详解(附源码)

showswoller的博客 7368

DataSet是什么,怎么用

什么是DataSetDataSet是分布式的数据集合。DataSet是在Spark1.6中添加的新的接口。它集中了RDD的优点(强类型和可以用强大lambda函数)以及Spark SQL优化的执行引擎。DataSet可以通过JVM的对象进行构建,可以用函数式的转换(map/flatmap/filter)进行多种操作。 DataFrame、DataSet、RDD的区别 假设RDD中的两行数据这...

山海 1万+

Dataset与Datatable(Dataset入门)

可以把DataSet当成内存中的数据库或者数据容器,DataSet是不依赖于数据库的独立数据集合。当数据库中的数据填充到Dataset之后,即使断开与数据库的连接,或者关闭数据库DataSet依然是可用的。Dataset是一种内存集合数据结构。 Datatable是内存中的数据。可以独立创建使用,也可以作为Dataset的成员使用。Datatable包括Datacolumn和Datarow,...

胡林的博客 6648

dataset基本用法

使用方法 1、创建DataSet对象 DataSet ds = new DataSet(); DataSet ds = new DataSet("DataSetName"); 2、用数据集填充DataSet 最常用的是DataAdapter对象的Fill()方法给他填充数据 (1) DataSet ds = new DataSet(); SqlDat

lyg_drd的博客 2万+

关于DataSet

一 、DataSet判断是否为空1,if(ds == null) 这是判断内存中的数据集是否为空,说明DATASET为空,行和列都不存在!!   2,if(ds.Tables[0].Count == 0) 这应该是在内存中存在一个DATASET,但是,数据集中不存在!!   3,if(ds.Tables[0].Count == 1 && ds.Tables[0].Rows.Count == 0

井垣东的博客 1423

Spark-SQL中DataFrame与DataSet的互操作|DataFrame转为DataSet|Dataset转为DataFrame|RDD、DataFrame和DataSet之间的关系

DataFrame转为DataSet 使用as方法,转成Dataset,这在数据类型是DataFrame又需要针对各个字段处理时极为方便。在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用。 val df = spark.read.json("/opt/module/spark-local/examples/src/main/r...

SmallScorpion 1617

1.monai——Dataset加载数据

monai第一步,加载医学图像数据

qq_45807235的博客 2469

Dataset用法实践之三 dataset与LINQ使用

<br />Dataset用法实践之三 dataset与LINQ使用<br />csharpsamples中有各种例子,是最好的教材。<br />http://www.yesky.com/96/1924596_2.shtml<br />  ADO.NET是.Net FrameWork SDK中用以操作数据库的类库的总称。而DataSet类则是ADO.NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触的类。之所以DataSet类在ADO.NET中具有特殊的地位,是因为Da

zhongchengli的专栏 5632

Linq To DataSet总结

使用LINQ技术查询DATASET中的单个 private void Form1_Load(object sender, EventArgs e) { string ConnectionString = "Data Source=DESKTOP-M4PUOAS\\SQLEXPRESS;Initial Catalog=db_TomeTwo;Use...

AI浩 7448

c#解析XML到DATASETdataset转为xml文件函数

c#解析XML到DATASETdataset转为xml文件函数 原文:c#解析XML到DATASETdataset转为xml文件函数//将xml对象内容字符串转换为DataSet public static DataSet ConvertXMLToDataSet(string xmlData) { ...

weixin_30239339的博客 354

DataFrame 和 Dataset

在 Spark 中,和都是用于处理结构化数据的 API,它们有很多相似之处,但也有一些关键的区别。

2401_86790846的博客 1152

python from dataset import Dataset 找不到Dataset

如何解决“python from dataset import Dataset 找不到 Dataset” 在学习 Python 编程的过程中,我们常常会遇到各种错误和问题,其中之一就是无法导入模块或类。今天我们就来讨论如何解决“from dataset import Dataset 找不到 Dataset”的问题。本文将带...

weixin_40881520的博客 712

DataSet赋值

DataSet 一个具有很多内置方法的程序集,在绑定数据中,使用率非常之高,虽然没有自定义泛型灵活性高,强类型的数据严谨性,而且一次性加载所有数据也稍微影响性能,但无可比拟的开发效率,在一些对性能要求不高的中小型绑定资料里,起到了非常好的作用.下面介绍了几种DataSet 的赋值

霜叶红于二月花 7564
上一篇: vb.net数据库编程知识梳理
下一篇: 三层架构学习(一)
wangboxian
博客等级 码龄15年 469粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值