C#中如何快速地将一个表(datatable)的内容复制给另一个表
来源:互联网 发布:断食减肥知乎 编辑:程序博客网 时间:2024/04/29 19:22
显然,列的结构是一样的,但列名可以不一样。之所以会出现这个问题,是因为我从数据库中把表调出来显示在dataGridView中时,需要将英文列名改为对用户亲善的中文列名。同时,程序允许用户直接修改表,并可以更新至数据库。这时由于列名已经改过,更新会失败。有两种解决方法,一种是将列名再改回去,另一种是将中文列名表中的内容复制到英文列名表中去。实现上第二种方法相对简便。
假设英文列名表为DtEng,中文列名表为DtChi.则以下几条简单语句即可实现数据的复制。
DtEng.Clear(); foreach (DataRow row in DtChi.Rows) { dtEng.ImportRow(row); }
用DtEng来更新数据库就没有问题了。
那用DataRowCollection.Add()方法可以吗?
DtEng.Clear(); foreach (DataRow row in DtChi.Rows) { dtEng.Rows.Add(row); }答案是不可以。当用datatable.NewRow()方法初始化的datarow的状态(rowstate)是detached,这种datarow是DataRowCollection.Add()唯一能接受的参数。
那用Datatable.Copy()方法可以吗?
DtEng = DtChi.Copy();答案是不可以。Datatable.Copy()方法会复制结构和数据,这会导致两个表的列名也会相同,而我们这里只要求复制数据。
附上测试代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { DataTable dt=new DataTable(); dt.Columns.Add("第一行"); dt.Columns.Add("第二行"); DataRow dr = dt.NewRow(); dr["第一行"]=1; dr["第二行"]=2; Console.WriteLine(dr.RowState.ToString()); try { dt.ImportRow(dr); Console.WriteLine(dt.Rows[0][0].ToString()); } catch { Console.WriteLine("dt.ImportRow(dr)运行后没有添加任何数据"); Console.WriteLine("DataTable的ImportRow()方法不能添加状态为Detached的行"); } dt.Rows.Add(dr); Console.WriteLine(dr.RowState.ToString()); dr["第二行"] = 3; Console.WriteLine(dr.RowState.ToString()); DataTable dt2 = new DataTable(); dt2.Columns.Add("A"); dt2.Columns.Add("B"); Console.WriteLine(dt2.Columns[0].ColumnName.ToString()); try { dt2.Rows.Add(dr); } catch { Console.WriteLine("fali!"); } dt2 = dt.Copy(); Console.WriteLine(dt2.Columns[0].ColumnName.ToString()); Console.ReadLine(); } }}
欢迎大家访问我的独立技术博客 道合|SameIdeal.com
- C#中如何快速地将一个表(datatable)的内容复制给另一个表
- C#如何将一个DataTable中满足条件的数据导入另一个DataTable
- C#如何将一个DataTable中满足条件的数据导入另一个DataTable
- 如何将一个数据库的表复制到另一个数据库
- C# 将 DataTable t1 内容复制到 DataTable t2中
- 复制表数据——把一个dataTable中符合条件的信息添加到另一个新的DataTable中
- sql中,将同一个表中两个类型一样的字段的值互换 以及 将同一个表中的一个字段的值复制给另一个字段
- C# 向一个DataTable内插入另一个DataTable的行,error“该行已属于另一个表”
- SQL中如何将一个表中的某一列的数据复制到另一个表中的某一列里
- 在dos下如何将一个盘的所有内容复制到另一个盘
- 将一个vector的内容赋值给另一个vector
- 复制DataTable数据,c#出错:该行已经属于另一个表
- mysql 将一个表的数据复制到另一个表中
- oracle中不同用户下的表复制 或 将一个表中的数据复制到另一个表中
- oracle中不同用户下的表复制 或 将一个表中的数据复制到另一个表中
- Oracle中不同用户下的表复制 或 将一个表中的数据复制到另一个表中
- 根据一个表快速创建另一个表,既复制表(只取列名不取内容)
- vim中如何将一个文件的内容拷贝到另一个文件中
- bacula之内存池实现
- 为什么要选择PHP开发网站,PHP有什么优势?
- 关于RTP打包h264的时间戳要注意的问题
- 在SQLite中使用事务
- flex DataGrid与CheckBox的使用,表头也加上CheckBox
- C#中如何快速地将一个表(datatable)的内容复制给另一个表
- Spket在Eclipse/MyEclipse下的安装和配置
- android相关知识简介
- HDOJ - 2371 矩阵乘法
- Tab组件的简单应用
- VC 多线程编程
- 使用Eclipse开发Sencha Touch框架教程--安装开发环境和senchatouch
- jq 获取表单值
- 基于HTTP的QQ协议分析