前言

今天我们一起学习一下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类内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

一文简单了解C# 中的DataSet类的更多相关文章

  1. iOS上的C#库

    我已经完成了droid开发,答案就是创建一些使用我的C#库的Web服务,然后让droid使用这些服务.我假设同样的方法适用于iOS(正确的???

  2. Swift 2.0协议扩展和Java / C#抽象类之间有区别吗?

    通过在Swift2.0中添加协议扩展,似乎协议基本上成为Java/C#抽象类.我唯一可以看到的不同之处在于抽象类限制为单一继承,而Swift类型可以符合任何数量的协议.这是对Swift2.0中的协议的正确理解,还是有其他差异?有几个重要的区别…

  3. Swift有一个隐式的Object Initializer,就像在C#中一样吗?

    在C#中,我们有对象初始化器,像这样:Swift有这个吗?例如,我有这个代码:但是想做以下一些事情:谢谢!

  4. Android的C#版本的Console.WriteLine?

    在Android中,写入控制台的最佳方式是什么.在C#中,我使用Log4Net或只使用Console.Write解决方法查看Android.Util.Log的帮助页面.您可以使用:

  5. Android上的C#:Xamarin或Unity?

    还是有其他解决方案?

  6. 结合 ES6 类编写JavaScript 创建型模式

    这篇文章主要介绍了结合ES6类编写JavaScript创建型模式,本文开始系统性的对20多种JavaScript 设计模式进行简单概述,然后结合ES6类的方式来编写实例代码展示其使用方式,需要的朋友可以参考一下

  7. 利用PHP实现与ASP Banner组件相似的类

    ********************************************************//*广告条管理程序publicmethodGetAdvertisementparametersTarget=Width=Height=Border=Redirect=*/classAdRotator{var$Target="_blank";var$Width="460";var$Height="60";var$Border=0;var$Redirect="";var$BannerData=ar

  8. Java SpringBoot 获取接口实现类汇总

    这篇文章主要介绍了Java SpringBoot 获取接口实现类汇总,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  9. 一个odbc连mssql分页的类

    classPages{var$cn;//连接数据库游标var$d;//连接数据表的游标var$result;//结果var$dsn;//dsn源var$user;//用户名var$pass;//密码var$total;//记录总数var$pages;//总页数var$onepage;//每页条数var$page;//当前页var$fre;//上一页var$net;//下一页var$i;//控制每页显示functiongetConnect{$this->cn=@odbc_connect;if(!$this-

  10. PHP中类静态调用和范围解析操作符的区别解析

    这篇文章主要介绍了PHP中类静态调用和范围解析操作符的区别,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部