首页 > 其他分享 >再次折腾ADO.Net行状态和行版本

再次折腾ADO.Net行状态和行版本

时间:2022-12-22 18:02:28浏览次数:32  
标签:Console oneRow WriteLine 和行 版本 output ADO Net dt

    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("ID", typeof(int));

            DataRow oneRow = dt.NewRow();
            oneRow[0] = 1;
            Console.WriteLine("新行的状态及版本:");
            output(oneRow);

            dt.Rows.Add(oneRow);
            Console.WriteLine("\n" + "增加到表中后的状态和版本:");
            output(oneRow);

            oneRow.BeginEdit();
            oneRow[0] = 5;
            Console.WriteLine("\n" + "开始编辑时的状态和版本:");
            output(oneRow);

            oneRow.EndEdit();
            Console.WriteLine("\n" + "结束编辑时的状态和版本:");
            output(oneRow);

            oneRow.AcceptChanges();
            Console.WriteLine("\n" + "接受更改后的状态和版本:");
            output(oneRow);

            oneRow[0] = 6;
            Console.WriteLine("\n" + "再次编辑后的状态和版本");
            output(oneRow);

            oneRow.RejectChanges();
            Console.WriteLine("\n" + "拒绝更改后的状态和版本");
            output(oneRow);

            dt.Rows[0].Delete();
            Console.WriteLine("\n" + "删除后的状态和版本:");
            output(oneRow);

            dt.RejectChanges();
            Console.WriteLine("\n" + "拒绝更改后的状态和版本");
            output(oneRow);

            dt.Rows.Remove(oneRow);
            Console.WriteLine("\n" + "移除后的状态和版本");
            output(oneRow);

            Console.ReadKey();
        }

        static void output(DataRow oneRow)
        {
            int[] version = { 256, 512, 1024, 1536, };
            //打印行状态
            Console.WriteLine(oneRow.RowState);
            foreach (int i in version)
            {
                if (oneRow.HasVersion((DataRowVersion)i))
                    //打印行版本名称及对应的值,用空格隔开
                    Console.Write(" " + (DataRowVersion)i + " " + oneRow[0, (DataRowVersion)i]);
            }
            Console.WriteLine("\n-----------------------------------");
        }
    }

行状态还好理解, 书上写的行版本看了多次也记不住, 自己花了一些时间, 终于有了自己的总结:

Original :"原始值" 顾名思义, 调用AcceptChange才会出现的版本, delete后唯一的版本

Proposed: 连接到DataTable时BeginEdit才会有的版本EndEdit就没了, 没连接到DataTable时赋值也有

Current: 连接到DataTable才会有的, 调用BeginEdit时使用Proposed版本, 否则直接更改Current版本

Default: Default值优先Proposed然后才取Current

输出如下---------------------------------------------------------------

 

标签:Console,oneRow,WriteLine,和行,版本,output,ADO,Net,dt
From: https://www.cnblogs.com/captionAmazing/p/16999308.html

相关文章

  • 基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等
    1、引言在社区中,分享了很多篇基于Netty编写的IM聊天入门文章(比如《跟着源码学IM》系列、《基于Netty,从零开发IM》系列等),在这些文章中分享了各种IM通信算法原理和功能逻辑......
  • jenkins+git+.net core实现自动发布
    一、前言    继上篇介绍jenkins过去2年多了,最近整理了一下,希望这篇能介绍到一些更实用的方法和知识。本次使用的jenkins版本是2.375.1、jdk17、WinRAR、git;......
  • centos7通过Ambari2.74部署Hadoop
    一、前言服务器:建议第一台内存不少于16G,其他可以8G 软件版本:资源链接:链接:https://pan.baidu.com/s/17GWF0opxYl0MIm2LJNUGRg?pwd=iq4l提取码:iq4l 二、部署前环境......
  • rinetd安装
    1、更新yumyum-yupdate2、安装依赖yuminstall-ygcc3、下载安装包至/opt/softcd/opt/softwgethttp://www.rinetd.com/download/rinetd.tar.gz若官......
  • .NET 版本与 C# 版本的对应关系
    目标框架versionC#语言版本的默认值.NET7.xC#11.NET6.xC#10.NET5.xC#9.0.NETCore3.xC#8.0.NETCore2.xC#7.3.NETStandard2.1C#......
  • Kubernetes监控手册02-宿主监控概述
    咱们这个系列是讲解Kubernetes监控,Kubernetes自身也是要跑在机器上的,那机器的监控自然也是整个体系的一环。机器层面的监控分为两部分,带内网络和带外网络,通过带内网络做......
  • nginx学习记录【二】nginx跟.net core结合,实现一个域名访问多个.net core应用
    1、实现转发打开conf下的nginx.conf文件,如下图: 2、添加.netcore网站的转发按下面的进行修改,修改完后,就把localhost的80转发到了https://localhost:5004的.netcore......
  • .net 6 全局路由扩展
    1、先定义一个类,用来实现IApplicationModelConvention 接口///<summary>///全局路由前缀配置///</summary>publicclassRouteConvention:IApplic......
  • .net core web api 路由约束
    路由约束在传入URL发生匹配时执行,URL路径标记为路由值。路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。某些路由约束使用路由值以外......
  • Kubernetes网络模型 -flannel +Calico
    切换网络所有pod需要重建Kubernetes要求所有的网络插件实现必须满足如下要求:一个Pod一个IP所有的Pod可以与任何其他Pod直接通信,无需使用NAT映射所有节点可以与所有......