一文简单了解C# 中的DataSet类

目录
  • 前言
  • DataSet属性和方法
  • 界面设计
  • 效果展示
  • 代码逻辑

前言

今天我们一起学习一下DataSet类,DataSet类官方的表示是这样的:"表示数据的内存中缓存",大致意思就是我们把数据去取出来,然后把数据给DataSet,再对DataSet做数据处理,这样似乎可以对数据做更快的处理,相当于一个临时的数据库,数据是从数据库检索的记录的缓存,数据集DataSet中不仅包含一个或多个表,还可以包括数据表之间的关系和约束。允许将不同类型的数据表复制到同一个数据集中,甚至还允许将数据表与XML文档组合到一起协同操作。数据集从数据源中获取数据以后就断开了与数据源之间的连接。允许在数据集中定义数据约束和表关系,增添、删除和编辑记录,还可以对数据集中的数据进行查询、统计等。当完成各项数据操作后,还可以将数据集中的最新数据更新到数据源。

DataSet属性和方法

//属性
CaseSensitive  
//获取或设置一个值,该值指示 DataTable 对象中的字符串比较是否区分大小写。
Container  
//获取组件的容器。
(DataSetName    
//获取或设置当前 DataSet 的名称。
DefaultViewManager  
//获取 DataSet 所包含的数据的自定义视图,以允许使用自定义的 DataViewManager 进行筛选、搜索和导航。
DesignMode  
//获取指示组件当前是否处于设计模式的值。
(EnforceConstraints
//获取或设置一个值,该值指示在尝试执行任何更新操作时是否遵循约束规则。
Events  
//获取附加到该组件的事件处理程序的列表。
(ExtendedProperties
//获取与 DataSet 相关的自定义用户信息的集合。
HasErrors  
//获取一个值,指示在此 DataTable 中的任何 DataSet 对象中是否存在错误。
IsInitialized  
//获取一个值,该值指示是否已初始化 DataSet。
Locale  
//获取或设置用于比较表中字符串的区域设置信息。
Namespace  
//获取或设置 DataSet 的命名空间。
Prefix  
//获取或设置一个 XML 前缀,该前缀是 DataSet 的命名空间的别名。
Relations  
//获取用于将表链接起来并允许从父表浏览到子表的关系的集合。
RemotingFormat  
//获取或设置远程处理期间使用的序列化格式 DataSet 。
SchemaSerializationMode
//获取或设置 SchemaSerializationMode 的 DataSet。
Site    
//获取或设置 ISite 的 DataSet。
Tables  
//获取包含在 DataSet 中的表的集合。
//方法
AcceptChanges()
//提交自加载此 DataSet 或上次调用 AcceptChanges() 以来对其进行的所有更改。
BeginInit()
//开始初始化在窗体上使用或由另一个组件使用的 DataSet。 初始化发生在运行时。
Clear()
//通过移除所有表中的所有行来清除任何数据的 DataSet。
Clone()
复制 DataSet 的结构,包括所有 DataTable 架构、关系和约束。 不要复制任何数据。
Copy()  
复制该 DataSet 的结构和数据。
CreateDataReader()  
为每个 DataTableReader 返回带有一个结果集的 DataTable,顺序与 Tables 集合中表的显示顺序相同。
CreateDataReader(DataTable[])  
为每个 DataTableReader 返回带有一个结果集的 DataTable。
DetermineSchemaSerializationMode(SerializationInfo, StreamingContext)  
确定 SchemaSerializationMode 的 DataSet。
DetermineSchemaSerializationMode(XmlReader)
确定 SchemaSerializationMode 的 DataSet。
Dispose()  
释放由 MarshalByValueComponent 使用的所有资源。
(Dispose(Boolean)  
释放由 MarshalByValueComponent 占用的非托管资源,还可以另外再释放托管资源。
(EndInit()  
结束在窗体上使用或由另一个组件使用的 DataSet 的初始化。 初始化发生在运行时。
Equals(Object)  
确定指定对象是否等于当前对象。
GetChanges()    
获取 DataSet 的副本,该副本包含自加载以来或自上次调用 AcceptChanges() 以来对该数据集进行的所有更改。
GetChanges(DataRowState)    
获取由 DataRowState 筛选的 DataSet 的副本,该副本包含上次加载以来或调用 AcceptChanges() 以来进行的所有更改。
GetDataSetSchema(XmlSchemaSet)  
获取数据集的 XmlSchemaSet 的副本。
GetHashCode()  
作为默认哈希函数。
GetObjectData(SerializationInfo, StreamingContext)  
使用序列化 DataSet 时所需的数据填充序列化信息对象。
GetSchemaSerializable()
返回一个可序列化的 XmlSchema 实例。
GetSerializationData(SerializationInfo, StreamingContext)  
从二进制或 XML 流反序列化表数据。
GetService(Type)    
获取 IServiceProvider 的实施者。
(GetType()  
获取当前实例的 Type。
GetXml()    
返回存储在 DataSet 中的数据的 XML 表示形式。
GetXmlSchema()  
返回存储在 DataSet 中的数据的 XML 表示形式的 XML 架构。
HasChanges()    
获取一个值,该值指示 DataSet 是否有更改,包括新增行、已删除的行或已修改的行。
HasChanges(DataRowState)    
获取一个值,该值指示 DataSet 是否有 DataRowState 被筛选的更改,包括新增行、已删除的行或已修改的行。
InferXmlSchema(Stream, String[])    
将指定 Stream 中的 XML 架构应用于 DataSet。
InferXmlSchema(String, String[])    
将指定文件中的 XML 架构应用于 DataSet。
InferXmlSchema(TextReader, String[])    
将指定 TextReader 中的 XML 架构应用于 DataSet。
InferXmlSchema(XmlReader, String[])
将指定 XmlReader 中的 XML 架构应用于 DataSet。
InitializeDerivedDataSet()  
从二进制或 XML 流反序列化数据集的所有表数据。
IsBinarySerialized(SerializationInfo, StreamingContext)
检查 DataSet 的序列化表示形式的格式。
Load(IDataReader, LoadOption, DataTable[])  
使用提供的 DataSet 以数据源的值填充 IDataReader,同时使用 DataTable 实例的数组提供架构和命名空间信息。
Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])  
使用提供的 DataSet 以数据源的值填充 IDataReader,同时使用 DataTable 实例的数组提供架构和命名空间信息。
Load(IDataReader, LoadOption, String[])
使用所提供的 DataSet,并使用字符串数组为 DataSet 中的表提供名称,从而用来自数据源的值填充 IDataReader。
MemberwiseClone()  
创建当前 Object 的浅表副本。
Merge(DataRow[])    
将 DataRow 对象数组合并到当前的 DataSet 中。
Merge(DataRow[], Boolean, MissingSchemaAction)  
将 DataRow 对象数组合并到当前的 DataSet 中,在此过程中,将根据给定的参数保留或放弃在 DataSet 中进行的更改并处理不兼容的架构。
Merge(DataSet)  
将指定的 DataSet 及其架构合并到当前 DataSet 中。
Merge(DataSet, Boolean)
将指定的 DataSet 及其架构合并到当前 DataSet 中,在此过程中,将根据给定的参数保留或放弃在此 DataSet 中进行的任何更改。
Merge(DataSet, Boolean, MissingSchemaAction)    
将指定的 DataSet 及其架构与当前的 DataSet 合并,在此过程中,将根据给定的参数保留或放弃在当前 DataSet 中的更改并处理不兼容的架构。
Merge(DataTable)    
将指定的 DataTable 及其架构合并到当前 DataSet 中。
Merge(DataTable, Boolean, MissingSchemaAction)  
将指定的 DataTable 及其架构合并到当前的 DataSet 中,在此过程中,将根据给定的参数保留或放弃在 DataSet 中进行的更改并处理不兼容的架构。
OnPropertyChanging(PropertyChangedEventArgs)    
引发 OnPropertyChanging(PropertyChangedEventArgs) 事件。
OnRemoveRelation(DataRelation)  
当从 DataRelation 中移除 DataTable 对象时发生。
OnRemoveTable(DataTable)    
当从 DataTable 中移除 DataSet 时发生。
RaisePropertyChanging(String)  
发送指定的 DataSet 属性将要更改的通知。
ReadXml(Stream)
使用指定的 Stream 将 XML 架构和数据读入 DataSet。
ReadXml(Stream, XmlReadMode)    
使用指定的 DataSet 和 Stream 将 XML 架构和数据读入 XmlReadMode。
ReadXml(String)
使用指定的文件将 XML 架构和数据读入 DataSet。
ReadXml(String, XmlReadMode)    
使用指定的文件和 DataSet 将 XML 架构和数据读入 XmlReadMode。
ReadXml(TextReader)
使用指定的 TextReader 将 XML 架构和数据读入 DataSet。
ReadXml(TextReader, XmlReadMode)    
使用指定的 DataSet 和 TextReader 将 XML 架构和数据读入 XmlReadMode。
ReadXml(XmlReader)  
使用指定的 XmlReader 将 XML 架构和数据读入 DataSet。
ReadXml(XmlReader, XmlReadMode)
使用指定的 DataSet 和 XmlReader 将 XML 架构和数据读入 XmlReadMode。
ReadXmlSchema(Stream)  
从指定的 Stream 中将 XML 架构读入 DataSet。
ReadXmlSchema(String)  
从指定的文件中将 XML 架构读入 DataSet。
ReadXmlSchema(TextReader)  
从指定的 TextReader 中将 XML 架构读入 DataSet。
ReadXmlSchema(XmlReader)    
从指定的 XmlReader 中将 XML 架构读入 DataSet。
ReadXmlSerializable(XmlReader)  
忽略特性并返回一个空的数据集。
RejectChanges()
回滚自创建 DataSet 以来或上次调用 AcceptChanges() 以来对其进行的所有更改。
Reset()
清除所有表并从 DataSet 中删除所有关系、外部约束和表。 子类应重写 Reset(),以便将 DataSet 还原到其原始状态。
ShouldSerializeRelations()  
获取一个值,该值指示是否应该保持 Relations 属性。
ShouldSerializeTables()
获取一个值,该值指示是否应该保持 Tables 属性。
ToString()  
返回包含 Component 的名称的 String(如果有)。 不应重写此方法。
(WriteXml(Stream)  
使用指定的 DataSet 为 Stream 写当前数据。
WriteXml(Stream, XmlWriteMode)  
使用指定的 Stream 和 XmlWriteMode 写入 DataSet 的当前数据和架构(可选)。 若要写入架构,请将 mode 参数的值设置为 WriteSchema。
WriteXml(String)    
将 DataSet 的当前数据写入指定的文件。
WriteXml(String, XmlWriteMode)  
使用指定的 XmlWriteMode 将 DataSet 的当前数据和架构(可选)写入指定的文件。 若要写入架构,请将 mode 参数的值设置为 WriteSchema。
WriteXml(TextWriter)    
使用指定的 DataSet 为 TextWriter 写当前数据。
WriteXml(TextWriter, XmlWriteMode)  
使用指定的 TextWriter 和 XmlWriteMode 写入 DataSet 的当前数据和架构(可选)。 若要写入架构,请将 mode 参数的值设置为 WriteSchema。
WriteXml(XmlWriter)
将 DataSet 的当前数据写入指定的 XmlWriter。
WriteXml(XmlWriter, XmlWriteMode)  
使用指定的 XmlWriter 和 XmlWriteMode 写入 DataSet 的当前数据和架构(可选)。 若要写入架构,请将 mode 参数的值设置为 WriteSchema。
WriteXmlSchema(Stream)  
将 DataSet 结构作为 XML 架构写入指定的 Stream 对象。
WriteXmlSchema(Stream, Converter<Type,String>)  
将 DataSet 结构作为 XML 架构写入指定的 Stream 对象。
WriteXmlSchema(String)  
将 XML 架构形式的 DataSet 结构写入文件。
WriteXmlSchema(String, Converter<Type,String>)  
将 XML 架构形式的 DataSet 结构写入文件。
WriteXmlSchema(TextWriter)  
将 DataSet 结构作为 XML 架构写入指定的 TextWriter 对象。
WriteXmlSchema(TextWriter, Converter<Type,String>)
将 DataSet 结构作为一个 XML 架构写入指定的 TextWriter。
WriteXmlSchema(XmlWriter)  
将 XML 架构形式的 DataSet 结构写入 XmlWriter 对象。
WriteXmlSchema(XmlWriter, Converter<Type,String>)
将 DataSet 结构作为一个 XML 架构写入指定的 XmlWriter。

(方法较多建议收藏,方便以后查看)

界面设计

效果展示

我只是对数据的复制,清空做了简单的操作,我们只要记住 ,使用SQLiteDataAdapter下面的Fill()方法是对数据封装,要使用具体的那个Table的数据就Table[0],一个DataSet可以有多张表,也就是多个Table,Table[0],Table[1].....再使用方法对数据进行操作

代码逻辑

只是做了一个简单的操作,我们可以根据方法,实现更多更高级的效果,这里只是简单操作一下,要深究可能两篇文章都不一定讲的清楚。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
​
namespace SQlite
{
    public partial class Form1 : Form
    {
        string connectionString = "data source=" + @"C:\Users\ASUS\Desktop\IC00\IC00.db";//必须IC00.db 用绝对路径,你的数据库路径
​
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            string sql = "select * from IC";//sql查询语句
            DataSet data = Select(sql);//调用查询函数
            DataSet dataSet = new DataSet();
            dataSet = data.Copy();//复制数据
         //  dataSet = data.Clone();//复制结构,意思就是不复制数据,复制表的结构,包括表头
           // dataSet.Clear();//数据清理,只清空数据,不对结构清空
           dataSet.Reset();
            dataGridView1.DataSource = data.Tables[0];//数据源为表格0也就是一个表
            dataGridView2.DataSource = dataSet.Tables[0];
        }
        public DataSet Select(string SQL)
        {
            using (SQLiteConnection conn = new SQLiteConnection(connectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                    conn.Open();//打开数据库连接
                    SQLiteDataAdapter com = new SQLiteDataAdapter(SQL, conn);//执行SQL语句
                    com.Fill(ds, "ds");//将所以数据封装为一个表
                }
                catch (System.Data.SQLite.SQLiteException ex)
                {
                    throw new Exception(ex.Message);
                }
                return ds;
            }
        }
      
    }
}

到此这篇关于一文简单了解C# 中的DataSet类的文章就介绍到这了,更多相关 C# DataSet类内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

    本文实例讲述了C#实现DataSet内数据转化为Excel和Word文件的通用类.分享给大家供大家参考,具体如下: 前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel.Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之. 最后请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性. using Syste

  • C#中DataSet转化为实体集合类的方法

    本文实例讲述了C#中DataSet转化为实体集合类的方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="p_DataSet">DataSet</param> /// <

  • 一文简单了解C# 中的DataSet类

    目录 前言 DataSet属性和方法 界面设计 效果展示 代码逻辑 前言 今天我们一起学习一下DataSet类,DataSet类官方的表示是这样的:"表示数据的内存中缓存",大致意思就是我们把数据去取出来,然后把数据给DataSet,再对DataSet做数据处理,这样似乎可以对数据做更快的处理,相当于一个临时的数据库,数据是从数据库检索的记录的缓存,数据集DataSet中不仅包含一个或多个表,还可以包括数据表之间的关系和约束.允许将不同类型的数据表复制到同一个数据集中,甚至还允许将数据

  • 一文搞懂Java中的日期类

    目录 一.日期类 1.1 第一代日期类 1.2 第二代日期类Calendar 1.3 第三代日期类 一.日期类 在程序的开发中我们经常会遇到日期类型的操作,Java对日期类型的操作提供了很好的支持.在最初的版本下,java.lang包中的System.currentTimeMillis();可以获取当前时间与协调时间(UTC)1970年1月1日午夜之间的时间差(以毫秒为单位测量).我们往往通过调用该方法计算某段代码的耗时. public class TestTime { public stati

  • 简单了解Spring中常用工具类

    文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring 提供了若干 Resource 接口的实现类,这些实现类可以轻松地加载不同类型的底层资源,并提供了获取文件名.URL 地址以及资源内容的操作方法 访问文件资源 * 通过 FileSystemResource 以文件系统绝对路径的方式进行访问: * 通过 ClassPathResource 以类路径的方式进行

  • 一文详解Vue3中简单diff算法的实现

    目录 简单Diff算法 减少DOM操作 例子 结论 实现 DOM复用与key的作用 例子 虚拟节点的key 实现 找到需要移动的元素 探索节点顺序关系 实现 如何移动元素 例子 实现 添加新元素 例子 实现 移除不存在的元素 例子 实现 总结 简单Diff算法 核心Diff只关心新旧虚拟节点都存在一组子节点的情况 减少DOM操作 例子 // 旧节点 const oldVNode = { type: 'div', children: [ { type: 'p', children: '1' },

  • 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握重点,所以本文将会自上而下地对Pytorch数据读取方法进行介绍. 自上而下理解三者关系 首先我们看一下DataLoader.next的源代码长什么样,为方便理解我只选取了num_works为0的情况(num_works简单理解就是能够并行化地读取数据). class DataLoader(obje

  • C#中遍历DataSet数据集对象实例

    本文介绍C#上如何使用DataSet对象,并对DataSet对象中的表进行遍历,同时遍历表中的每一行,遍历每一行的每一列的值. 首先什么是DataSet,在C#中,Dataset就像一个数据库,其中可以有多个表(Table),也可以只有一个表,每个表中有行(DataRow)和列(DataColumn).使用DataRow[DataColumn]的形式可以得到某行某列数据值. 复制代码 代码如下: //下面例子中使用foreach来遍历DataSet中的所有表,对于每个表遍历所有的记录,并输出每一

  • 一文了解Go语言中编码规范的使用

    每个语言都有自己特色的编码规范,学习该语言的命名规范,能让你写出来的代码更加易读,更加不容易出现一些低级错误. 本文根据个人编码习惯以及网络上的一些文章,整理了一些大家能用上的编码规范,可能是一些主流方案,但不代表官方,这一点先声明一下. 1. 文件命名 由于 Windows平台文件名不区分大小写,所以文件名应一律使用小写 不同单词之间用下划线分词,不要使用驼峰式命名 如果是测试文件,可以以 _test.go 结尾 文件若具有平台特性,应以 文件名_平台.go 命名,比如 utils_ wind

  • 简单介绍java中equals以及==的用法

    简单介绍 equals方法是java.lang.Object类的方法有两种用法说明: 一.对于字符串变量来说,使用"=="和"equals()"方法比较字符串时,其比较方法不同. 1."=="比较两个变量本身的值,即两个对象在内存中的首地址.(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属

  • 一文搞懂Java中的反射机制

    前一段时间一直忙,所以没什么时间写博客,拖了这么久,也该更新更新了.最近看到各种知识付费的推出,感觉是好事,也是坏事,好事是对知识沉淀的认可与推动,坏事是感觉很多人忙于把自己的知识变现,相对的在沉淀上做的实际还不够,我对此暂时还没有什么想法,总觉得,慢慢来,会更快一点,自己掌握好节奏就好. 好了,言归正传. 反射机制是Java中的一个很强大的特性,可以在运行时获取类的信息,比如说类的父类,接口,全部方法名及参数,全部常量和变量,可以说类在反射面前已经衣不遮体了(咳咳,这是正规车).先举一个小栗子

  • 一文详解JS中的事件循环机制

    目录 前言 1.JavaScript是单线程的 2.同步和异步 3.事件循环 前言 我们知道JavaScript 是单线程的编程语言,只能同一时间内做一件事,按顺序来处理事件,但是在遇到异步事件的时候,js线程并没有阻塞,还会继续执行,这又是为什么呢?本文来总结一下js 的事件循环机制. 1.JavaScript是单线程的 JavaScript 是一种单线程的编程语言,只有一个调用栈,决定了它在同一时间只能做一件事.在代码执行的时候,通过将不同函数的执行上下文压入执行栈中来保证代码的有序执行.在

随机推荐