C#的数据集:DataSet对象

news2025/3/14 3:05:54

目录

一、合并DataSet内容

1.源码

2.生成效果 

二、 复制DataSet内容

1.源码

2.生成效果


        DataSet对象就像存放于内存中的一个小型数据库。它可以包含数据表、数据列、数据行、视图、约束以及关系。通常,DataSet的数据来源于数据库或者XML,为了从数据库中获取数据,需要使用数据适配器(DataAdapter)从数据库中查询数据。

一、合并DataSet内容

        可以使用DataSet的Merge()方法将DataSet、DataTable或DataRow数组的内容并入现有的DataSet中。

        Merge()方法将指定的DataSet及其架构与当前的DataSet合并,在此过程中,将根据给定的参数保留或放弃在当前DataSet中的更改并处理不兼容的架构。 语法如下:

public void Merge
(
    DataSet dataSet,
    bool preserveChanges,
    MissingSchemaAction missingSchemaAction
)
☑ dataSet:其数据和架构将被合并到DataSet中。
☑ preserveChanges:要保留当前DataSet中的更改,则为true;否则为false。
☑ missingSchemaAction:MissingSchemaAction枚举值之一。

        MissingSchemaAction枚举成员及说明

  枚举成员

说     明

  Add

添加必需的列以完成架构

AddWithKey

添加必需的列和主键信息以完成架构,用户可以在每个DataTable上显式设置主键约束。这将确保对与现有记录匹配的传入记录进行更新,而不是追加

  Error

如果缺少指定的列映射,则生成InvalidOperationException

  Ignore

忽略额外列

1.源码

//Form1.cs
//使用DataSet的Merge()方法将DataSet、DataTable或DataRow数组的内容并入现有的DataSet中。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _9
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        SqlConnection conn;

        private void Form1_Load(object sender, EventArgs e)
        {
            //conn = new SqlConnection("Server=DESKTOP-QFENBNJ\\SQL_WEN;integrated security=SSPI;Initial Catalog=db_CSharp");
            conn = new SqlConnection("Server=DESKTOP-GFMO83R;integrated security=SSPI;Initial Catalog=db_CSharp");
            DataSet ds = new DataSet();                                             //创建数据集
            DataSet ds1 = new DataSet();
            SqlDataAdapter sda = new SqlDataAdapter("select * from tb_test", conn); //创建用于连接SQL的适配器对象
            sda.Fill(ds);                                                           //填充数据集
            SqlDataAdapter sda1 = new SqlDataAdapter("select * from tb_man", conn); 
            /*SqlCommandBuilder sbl = new SqlCommandBuilder(sda1);   */             //创建适配器sda1的SqlCommandBuilder对象,可删除
            sda1.Fill(ds1);
            ds1.Merge(ds, true, MissingSchemaAction.Add/*WithKey*/);                //数据集ds合并到数据集ds1,都可以
            dataGridView1.DataSource = ds1.Tables[0];                               //dataGridView1的数据源是ds1
            /*dataGridView1.DataSource = ds.Tables[0]; */                           //测试
        }
    }
}

2.生成效果 

二、 复制DataSet内容

        为了在不影响原始数据的情况下使用数据,或者使用DataSet中数据的子集,可以创建DataSet的副本。当复制DataSet时,可以:

    ☑ 创建DataSet的原样副本,其中包含架构、数据、行状态信息和行版本。
    ☑ 创建包含现有DataSet的架构但仅包含已修改行的DataSet。可以返回已修改的所有行或者指定特定的DataRowState。
    ☑ 仅复制DataSet的架构(即关系结构),而不复制任何行

        可以使用ImportRow将行导入现有的可以使用DataSet对象的Copy()方法创建包含架构和数据的DataSet的原样副本。Copy()方法的功能是复制指定DataSet的结构和数据。

    语法如下:
    public DataSet Copy()
    返回值:新的DataSet,具有与该DataSet相同的结构(表架构、关系和约束)和数据。

1.源码

//Form1.cs
//复制DataSet内容
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _10
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        SqlConnection conn;
        DataSet ds;

        /// <summary>
        /// 初始化Form1
        /// </summary>
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "复制";

            //conn = new SqlConnection("Server=DESKTOP-QFENBNJ\\SQL_WEN;integrated security=SSPI;Initial Catalog=db_CSharp");
            conn = new SqlConnection("Server=DESKTOP-GFMO83R;integrated security=SSPI;Initial Catalog=db_CSharp");
            SqlCommand cmd = new SqlCommand("select * from tb_test", conn);//创建SqlCommand对象,建立数据集与SQL的关联
            SqlDataAdapter sda = new SqlDataAdapter     //创建数据适配器对象sda
            {
                SelectCommand = cmd
            };
            ds = new DataSet();                         //创建数据集ds
            sda.Fill(ds/*, "test"*/);                   //填充数据集ds,注释部分可删除
            dataGridView1.DataSource = ds.Tables[0];    //dataGridView1的数据源=ds
        }

        /// <summary>
        /// 复制数据集DataSet
        /// </summary>
        private void Button1_Click(object sender, EventArgs e)
        {
            DataSet ds1 = ds.Copy();                    //复制ds到ds1
            dataGridView2.DataSource = ds1.Tables[0];   //dataGridView2的数据源=ds1
        }
    }
}

2.生成效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1103896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧文旅推动“互联网+”深入发展、促进数字经济加速增长

1997年之后&#xff0c;科技开始成为旅游行业发展的重要生产要素和重要动力。 文旅1.0时代&#xff0c;科技所能提供的信息和服务基本都需要游客在旅游开始之前做大量的准备工作&#xff0c;而在旅游过程中却无法随机应变&#xff0c;对于旅游景点来说&#xff0c;也只是更换了…

如何在C程序中使用libcurl库下载网页内容

概述 爬虫是一种自动获取网页内容的程序&#xff0c;它可以用于数据采集、信息分析、网站监测等多种场景。在C语言中&#xff0c;有一个非常强大和灵活的库可以用于实现爬虫功能&#xff0c;那就是libcurl。libcurl是一个支持多种协议和平台的网络传输库&#xff0c;它提供了一…

在.Net 5或更高版本的.Net中使用appsettings.json配置文件

在.Net 5或更高版本的.Net中使用appsettings.json配置文件 对于 .NET Framework 应用程序&#xff0c;我们始终使用app.config来存储应用程序的配置值。 在.NET Core或者.Net 5包括其他更高版本的.Net框架中&#xff0c;我们需要使用appsettings.json文件&#xff0c;而不是A…

餐饮业的现状能拉动消费市场吗?

有关“餐饮店倒闭成趋势”话题的讨论在互联网上愈加热烈起来&#xff0c;足以说明“全民消费&#xff0c;拉动经济”的希望尚未变成现实。从笔者寄居养老的风水宝地——国家AAAA级旅游景区崇州市街子古镇的餐饮店&#xff0c;在今年中秋、国庆双节假日期间火了几天后生意又复归…

计算机毕业设计 基于Spring Boot智能停车计费系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

C++之基于Winsock2封装UDPServer与UDPClient

文章目录 Socket过程UDPServer.hUDPServer.cppUDPClient.hUDPClient.cppmain.cppCMakeLists.txt测试截图 Socket过程 UDPServer UDPClient UDPServer.h #ifndef UDPSERVER_H_INCLUDED #define UDPSERVER_H_INCLUDED#include <iostream> #include <string> #inclu…

漫谈下一代防火墙与Web应用防火墙的区别

如今&#xff0c;Web应用程序变得越来越复杂&#xff0c;更是黑客非常感兴趣的目标。在谈到网络安全的话题时&#xff0c;我们总会讨论下一代防火墙与Web应用防火墙的区别。当已经拥有下一代防火墙&#xff08;NGFW&#xff09;时&#xff0c;为什么需要Web应用程序防火墙&…

靶机 Raven2 / UDF 提权

Raven2 信息搜集 存活检测 详细扫描 后台扫描 dirsearch -u http://10.4.7.135 -x 403 # 过滤状态码为 403 的后台页面Webshell 漏洞发现 访问扫描出的后台页面 /vendor 页面 发现网站使用了 PHPMailer PHPMailer是一个用于发送电子邮件的PHP库。它提供了一个简单而灵活的…

PFL-MoE:基于混合专家的个性联邦学习

文章链接&#xff1a;PFL-MoE: Personalized Federated Learning Based on Mixture of Experts 发表会议&#xff1a;APWeb-WAIM 2021&#xff08;CCF-C&#xff09; 目录 1.背景介绍联邦学习non-IIDPFL 2.内容摘要关键技术A.PFL-MoEB.PFL-MFC.PFL-MFE 实验结果 3.文章总结 1.…

QT 绘制文字轮廓

最近在做文字绘制&#xff0c;需要用到绘制文字轮廓&#xff0c;发现QT里面有自己的解决方案&#xff0c;分享出来&#xff1b; 具体贴代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QPainter>MainWindow::MainWindow(QWidg…

Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战

目录 一、QInputDialog 类(输入对话框) 二、QMessageBox 类(消息框) 三、QMessageBox 类(自定义消息框) 一、QInputDialog 类(输入对话框) QInputDialog 是一个提供输入对话框的 Qt 类。它允许用户输入文本&#xff0c;并提供给用户选择可用选项的选项列表。QInputDialog 可…

Elasticsearch使用——结合MybatisPlus使用ES es和MySQL数据一致性 结合RabbitMQ实现解耦

前言 本篇博客是一篇elasticsearch的使用案例&#xff0c;包括结合MybatisPlus使用ES&#xff0c;如何保证MySQL和es的数据一致性&#xff0c;另外使用了RabbitMQ进行解耦&#xff0c;自定义了发消息的方法。 其他相关的Elasticsearch的文章列表如下&#xff1a; Elasticsear…

ES6 Symbol 数据结构

1. Symbol概念以及引入原因 ES6 引入了的一种新的原始数据类型Symbol&#xff0c;表示独一无二的值。它是 JavaScript 语言的第七种数据类型&#xff0c;前六种是&#xff1a;undefined、null、布尔值&#xff08;Boolean&#xff09;、字符串&#xff08;String&#xff09;、…

政务OA协同办公系统:数字化工具助力政府服务升级

在当今数字化时代&#xff0c;政务OA协同办公系统已经成为政府服务升级的重要工具。通过引入数字化技术&#xff0c;政务OA协同办公系统可以实现高效的信息传递、流程优化以及资源整合&#xff0c;进一步提升政府服务的质量和效率。本文将探讨政务OA协同办公系统的优势及其在数…

【UE5 Cesium】19-Cesium for Unreal 建立飞行跟踪器(4)

遗留问题 在上一篇博客中&#xff08;【UE5 Cesium】18-Cesium for Unreal 建立飞行跟踪器&#xff08;3&#xff09;&#xff09;&#xff0c;我们实现了飞机变速飞行的功能&#xff0c;但是还存在两个问题&#xff0c;分别是&#xff1a; &#xff08;1&#xff09;由于UE的…

三维地图开发三维地图服务器

三维地图开发三维地图服务器 发布时间&#xff1a;2020-03-03 版权&#xff1a; 搭建离线地图服务主要是两个步骤&#xff1a;一是&#xff1a;下载离线地图服务需要的地图数据&#xff1b;二是&#xff1a;将下载的离线地图数据发布成地图服务&#xff1b;只有做好这两步&…

【java零基础入门到就业】第二天:jdk的下载安装和第一个HelloWorld程序

1、java内容概述 java前半部分学习内容主要如下&#xff1a; 1、Java基础语法2、面向对象3、API4、字符串5、集合6、拼图游戏 1.1、 java基础语法 java基础语法主要包括以下内容&#xff1a; Java入门小概念Idea和运算符判断和循环方法数组课后练习题 Java是什么&#xf…

Qt基础 QPieSeries饼状图

目录 1.简单例子 2. 稍微复杂点 QPieSeries Class&#xff1a;饼状图数据 QChart 管理图表系列、图例和轴的图形表示 QChartView 可以显示图表的独立小部件 QPieSeries 在饼图中显示数据 QPieSlice 表示饼图系列中的单个切片&#xff08;其实就是标签&#xff09; 1…

鸿蒙应用开发之HTTP数据请求

一、概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种能实时从服务…

Python突破浏览器TLS/JA3 指纹

JA3 是一种创建 SSL/TLS 客户端指纹的方法&#xff0c;一般一个网站的证书是不变的&#xff0c;所以浏览器指纹也是稳定的&#xff0c;能区分不同的客户端。 requests库 Python requests库请求一个带JA3指纹网站的结果&#xff1a; import requestsheaders {authority: tls…