DataTable类Clone方法与Copy方法的区别分析

DataTable.Clone 方法:克隆 DataTable 的结构,包括所有 DataTable 架构和约束。

DataTable.Copy 方法:复制该 DataTable 的结构和数据。

我们可以编写如下的程序,进行验证:


代码如下:

static string connStr = "Server=.\\sqlexpress;Initial Catalog=hr;Integrated Security=True";

static void Clone()
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                string sql = "select * from emp";
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataTable dtClone = dt.Clone();
                Print(dtClone);
            }
        }

private static void Print(DataTable dtClone)
        {
            foreach (DataColumn col in dtClone.Columns)
            {
                Console.Write(col.DataType+"\t");
            }
            Console.WriteLine();
            foreach (DataRow row in dtClone.Rows)
            {
                Console.Write(row[0] + "\t" + row[1] + "\t" + row[2] + "\n");
            }
            Console.WriteLine();
        }
        static void Main(string[] args)
        {
            Clone();//仅仅复制表结构
            Copy();//复制表结构及数据
            Console.ReadKey();
        }

private static void Copy()
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                string sql = "select * from emp";
                SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                DataTable dtCopy = dt.Copy();
                Print(dtCopy);
            }
        }
    }

(0)

相关推荐

  • DataTable类Clone方法与Copy方法的区别分析

    DataTable.Clone 方法:克隆 DataTable 的结构,包括所有 DataTable 架构和约束. DataTable.Copy 方法:复制该 DataTable 的结构和数据. 我们可以编写如下的程序,进行验证: 复制代码 代码如下: static string connStr = "Server=.\\sqlexpress;Initial Catalog=hr;Integrated Security=True"; static void Clone()       

  • c#简单工厂、工厂方法与抽象工厂的区别分析

    有一个比较好理解的例子,在这跟大家介绍下:   1.如果一个后花园只种蔬菜类,那么就用简单工厂就可以了.   2.如果后花园蔬菜品种繁多.得用工厂方法才可以,把共有的东西抽象出来.   3.如果要扩大后花园的规模,比如一个在北方,一个在南方,这样工厂方法就无法实现了,就应当用抽象工厂,把各种各样的植物,又组成一个后花园. 所以我个人认为,简单工厂是一个工厂只生产一类的产品,面对的是具体的类,工厂方法是可以生产不同的产品,把公共的方法抽象出来,然后进行创建各种各样的产品.抽象工厂把几种产品划出共同

  • 使用node.js中的Buffer类处理二进制数据的方法

    前言 在Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区.这篇文章就详细介绍了node.js中的Buffer类处理二进制数据的方法,下面话不多说,来看看详细的介绍. 创建Buffer对象 第一种:直接使用一个数组来初始化缓存区 var arr = [0,1,2] var buf = new Buffer(arr) console.log(buf) 执行效果: 第二种:直接使用一个字符串来初始化缓存区 var str = 'hello' var buf = n

  • Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan

    所谓复制数组,是指将一个数组中的元素在另一个数组中进行复制.本文主要介绍关于 Java 里面的数组复制(拷贝)的几种方式和用法. 在 Java 中实现数组复制分别有以下 4 种方法: Arrays 类的 copyOf() 方法 Arrays 类的 copyOfRange() 方法 System 类的 arraycopy() 方法 Object 类的 clone() 方法 下面来详细介绍这 4 种方法的使用. 使用 copyOf() 方法和 copyOfRange() 方法 Arrays 类的 c

  • c#中DataTable转List的2种方法示例

    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,List<T>类是ArrayList类的泛型等效类,该类使用大小可按需动态增加的数组实现IList<T>泛型接口.这篇文章主要介绍了c# DataTable 转 List的两种方法,下面来一起看看吧. 1.  直接写一个datatable转list的类 2. 利用泛型来写,更加通用 public List<Dictionary<string

  • Java中Object类常用的12个方法(小结)

    目录 前言 1. getClass 方法 2. hashCode 方法 3. equals 方法 4. clone 方法 5. toString 方法 6. notify 方法 7. notifyAll 方法 8. wait(long timeout) 方法 9. wait(long timeout, int nanos) 方法 10. wait 方法 11. finalize 方法 前言 Java 中的 Object 方法在面试中是一个非常高频的点,毕竟 Object 是所有类的"老祖宗&qu

  • Java时间工具类Date的常用处理方法

    目录 前言 Date 类 构造方法 常用方法 前言 Date 类 Date 类表示系统特定的时间戳,可以精确到毫秒.Date 对象表示时间的默认顺序是星期.月.日.小时.分.秒.年. 构造方法 Date 类有如下两个构造方法. Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间. Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0

  • 简单实体类和xml文件的相互转换方法

    最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类.题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换.于是今天下午立马动手 试了下,做了个简单的模型,可以将简单的实体类和xml文件进行相互转换,但对实体类的属性类型有限制,目前只支持String, Integer, Double三种类型.但是后面可以扩展. 我的大概思路是这样的,只要能拿到实体类的类型信息,我就能拿到实体类的全部字段名称和类型,拼属性的set和get方法更是简单明了,这时

  • JS类的定义与使用方法深入探索

    本文实例分析了JS类的定义与使用方法.分享给大家供大家参考,具体如下: js可以定义自己的类 很有意思 <script type="text/javascript"> var Anim = function() { alert('nihao'); }; Anim.prototype.start = function() { alert('start'); }; Anim.prototype.stop = function() { alert('stop'); }; var

  • Java中获取类路径classpath的简单方法(推荐)

    如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

随机推荐