在项目中经常用到
DataTable,
如果
DataTable
使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对
DataTable
的使用技巧进行一下总结。
一、
DataTable
简介
(1)
构造函数
DataTable()
不带参数初始化
DataTable
类的新实例。
DataTable(string tableName)
用指定的表名初始化
DataTable
类的新实例。
DataTable(string tableName, string tableNamespace)
用指定的表名和命名空间初始化
DataTable
类的新实例。
(2)
常用属性
CaseSensitive
指示表中的字符串比较是否区分大小写。
ChildRelations
获取此
DataTable
的子关系的集合。
Columns
获取属于该表的列的集合。
Constraints
获取由该表维护的约束的集合。
DataSet
获取此表所属的
DataSet
。
DataSet
相关信息,可见我以前的一篇文章《数据访问
(2)
-
DataSet
》
DefaultView
获取可能包括筛选视图或游标位置的表的自定义视图。
HasErrors
获取一个值,该值指示该表所属的
DataSet
的任何表的任何行中是否有错误。
MinimumCapacity
获取或设置该表最初的起始大小。该表中行的最初起始大小。
默认值为
50
。
Rows
获取属于该表的行的集合。
TableName
获取或设置
DataTable
的名称。
(3)
常用方法
AcceptChanges()
提交自上次调用
AcceptChanges()
以来对该表进行的所有更改。
BeginInit()
开始初始化在窗体上使用或由另一个组件使用的
DataTable
。初始化发生在运行时。
Clear()
清除所有数据的
DataTable
。
Clone()
克隆
DataTable
的结构,包括所有
DataTable
架构和约束。
EndInit()
结束在窗体上使用或由另一个组件使用的
DataTable
的初始化。初始化发生在运行时。
ImportRow(DataRow row)
将
DataRow
复制到
DataTable
中,保留任何属性设置以及初始值和当前值。
Merge(DataTable table)
将指定的
DataTable
与当前的
DataTable
合并。
NewRow()
创建与该表具有相同架构的新
DataRow
。
二、
DataTable
使用技巧
(1
)新建一个DataTable
DataTable dt = new DataTable("Table_AX");
(2
)添加 columns 到DataTable
//Method 1
dt.Columns.Add("column0", System.Type.GetType("System.String"));
//Method 2
DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);
(3
)添加rows 到DataTable
//Initialize the row
DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);
//Doesn't initialize the row
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1);
(4
)Select row
//Search the second row
如果没有赋值,
则用is null
来select
DataRow[] drs = dt.Select("column1 is null");
DataRow[] drss = dt.Select("column0 = 'AX'");
(5
)Copy DataTable include data
DataTable dtNew = dt.Copy();
(6
)只是复制DataTable 的 scheme
DataTable dtOnlyScheme = dt.Clone();
(7
)Operate one row
//
对dt
的操作
//Method 1
DataRow drOperate = dt.Rows[0];
drOperate["column0"] = "AXzhz";
drOperate["column1"] = false;
//Method 2
drOperate[0] = "AXzhz";
drOperate[1] = false;
//Method 3
dt.Rows[0]["column0"] = "AXzhz";
dt.Rows[0]["column1"] = false;
//Method 4
dt.Rows[0][0] = "AXzhz";
dt.Rows[0][1] = false;
(8
)Evaluate another DataTable's row to current Datatable
dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);
(9
)Convert to string
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
dt.WriteXml(xw);
string s = sw.ToString();
(10
)Filter DataTable
dt.DefaultView.RowFilter = "column1 <> true";
dt.DefaultView.RowFilter = "column1 = true";
(11
)Sort row排序
dt.DefaultView.Sort = "ID ,Name ASC";
dt=dt.DefaultView.ToTable();
(12
)Bind DataTable
//
绑定的其实是DefaultView
gvTestDataTable.DataSource = dt;
gvTestDataTable.DataBind();
(13
)judge the DataTable
’s Column name is a string
//
判断一个字符串是否为DataTable
的列名
dtInfo.Columns.Contains("AX");
(14
)DataTable convert to XML and XML convert to DataTable
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt_AX = new DataTable();
//dt_AX.Columns.Add("Sex", typeof(System.Boolean));
//DataRow dr = dt_AX.NewRow();
//dr["Sex"] = true;
//dt_AX.Rows.Add(dr);
string xml=ConvertBetweenDataTableAndXML_AX(dt_AX);
DataTable dt = ConvertBetweenDataTableAndXML_AX(xml);
}
public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret)
{
System.IO.TextWriter tw = new System.IO.StringWriter();
//if TableName is empty, WriteXml() will throw Exception.
dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
dtNeedCoveret.WriteXml(tw);
dtNeedCoveret.WriteXmlSchema(tw);
return tw.ToString();
}
public DataTable ConvertBetweenDataTableAndXML_AX(string xml)
{
System.IO.TextReader trDataTable = new System.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml")));
System.IO.TextReader trSchema = new System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
DataTable dtReturn = new DataTable();
dtReturn.ReadXmlSchema(trSchema);
dtReturn.ReadXml(trDataTable);
return dtReturn;
}
分享到:
相关推荐
1. **使用构造函数**:最常见的方式是使用默认构造函数或带有名称参数的构造函数来创建 `DataTable`。 ```csharp DataTable myTable = new DataTable(); DataTable myNamedTable = new DataTable("MyTable"); ``...
这在数据分析、数据清洗或者数据库同步等场景中非常常见。本教程将通过一个完整的源码示例,帮助初学者理解如何在C#中快速地完成这个任务。 首先,我们需要理解以下几个概念: 1. **交集(Intersection)**:两个...
在.NET开发环境中,DataTable是一种常用的数据结构,它用于存储和操作数据,类似于数据库中的表格。...总的来说,将DataTable导出为Excel是一项常见的需求,掌握这个技能对提升开发效率有很大帮助。
这个"**NPOI ExceltoDatatable.zip**"压缩包显然是一个示例项目或教程,教你如何使用NPOI将Excel数据转换为DataTable,这是一个常见的数据处理任务,特别是在数据分析、报表生成或数据导入到数据库等场景中。...
在IT行业中,`DataTable` 是一个常见的数据处理和展示组件,尤其在Web开发领域中广泛使用。本示例“dataTable_demooo”似乎是一个关于使用`DataTable`的演示或教程,可能涉及如何创建、操作和定制这个组件。`...
在数据分析工作中,Excel与DataTable的转换非常常见。在.NET框架下,DataTable可以直接从Excel文件加载数据,使用`System.Data.OleDb`命名空间下的`OleDbConnection`、`OleDbCommand`和`OleDbDataAdapter`类。相反,...
5. **示例和教程**:可能包含代码示例和教程,帮助新用户快速上手。 6. **错误处理和日志记录**:集成良好的错误处理机制和日志记录,便于调试和问题定位。 7. **测试套件**:确保工具的功能性和稳定性,通过自动化...
Laravel通过减轻许多Web项目中使用的常见任务来减轻开发工作的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,强大的应用程序所...
这个“通用的添删改”教程可能包含了一系列的C#或VB.NET代码示例,展示了如何使用`DataTable`处理数据。初学者可以通过这些示例了解和实践数据操作的基本步骤,逐步掌握`DataTable`的用法。在实际项目中,理解并熟练...
【ASP.NET数据库网站设计教程(C#版)第11章 使用DataSet访问数据库】 在ASP.NET开发中,访问和管理数据库是一项重要的任务。本章主要介绍如何使用DataSet类来实现这一目标,它是一个在内存中存储关系数据的离线...
《C#.NET开发AUTOCAD教程(官方版DOC)》是一个专门为编程爱好者和AUTOCAD用户准备的资源,旨在深入探讨如何使用C#.NET语言进行AUTOCAD的二次开发。这个教程由官方提供,确保了内容的专业性和权威性,旨在帮助开发者...
读者将学会如何使用DataSet、DataTable、DataAdapter等对象进行数据操作,并实现数据的缓存和离线处理。 此外,本书还将涉及Web应用程序的开发,讲解如何使用ASP.NET框架,结合C#编写动态网页。ASP.NET提供了丰富的...
"Bulk-data-Export-to-Excel-from-Datatable-and-Datag.pdf"可能是相关教程或指南,详细解释了批量导出的过程和注意事项。 在实际开发中,为了提高效率,开发者可能会使用异步操作、内存优化或者缓存策略来处理大量...
数据库交互是许多应用程序的核心,本教程可能包含使用ADO.NET与SQL Server或其他数据库进行连接、查询和数据操作的例子。这涉及到数据库连接字符串、SqlCommand对象、DataSet和DataTable等知识。 最后,图形用户...
在本教程中,我们将探讨如何利用Datatables与Ajax结合,动态地从服务器获取并展示数据。 首先,让我们了解基础概念。jQuery是一个轻量级的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。...
同时,源码还可能涉及使用ADO.NET(如DataSet、DataTable和DataAdapter)来与SQL Server交互,这是.NET框架中用于数据库访问的标准库。 电子教案则可能包含详细的课程大纲、课件、案例分析和练习题,为学习者提供了...
学习如何使用Dataset、DataTable、DataAdapter等对象进行数据操作,以及如何使用SQL语句执行查询和更新操作。此外,还可能涉及Entity Framework,这是一种更高级的ORM(对象关系映射)工具,可以简化数据库操作。 5...
8. 数据访问:通过ADO.NET接口连接数据库,进行CRUD(创建、读取、更新、删除)操作,了解DataSet、DataTable、DataAdapter等组件的用法。 9. 多线程编程:介绍如何创建和管理线程,实现并发执行,提高程序效率。 ...
对于标题提到的"ShowDataTable(2017-3-20).rar",我们可以推测这可能是一个关于`DataTable`使用的教程或示例集合,创建于2017年3月20日。文件中包含的"ShowDataTable"可能是多个演示`DataTable`功能的示例代码或项目...