DataTable的一些使用技巧
2013-08-29 21:50
176 查看
在做机房的时候经常用到DataTable,发现如果DataTable使用的好的话,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果。现在对我知道的一些技巧做个总结,虽然都是一些简单的,但是发现真的挺好用的。
首先我们对DataTable有了简单的了解:
(1)概念:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO.net库中的核心对象。——百度的解释
(2)常用方法:
AcceptChanges()提交自上次调用AcceptChanges()以来对该表进行的所有更改。
BeginInit()开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。
Clear()清除所有数据的DataTable。
Clone()克隆DataTable的结构,包括所有DataTable架构和约束。
EndInit()结束在窗体上使用或由另一个组件使用的DataTable的初始化。初始化发生在运行时。
ImportRow(DataRowrow)将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。
Merge(DataTabletable)将指定的DataTable与当前的DataTable合并。
NewRow()创建与该表具有相同架构的新DataRow。
从概念中我们知道DataTable是一个临时而且是虚拟的表,只要是表我们就可以对它进行常见的增删改查的操作,
这样就可以减少我们与数据库的交互次数。
1.添加列。在DataTable对象中添加列在DataTable对象中添加列的最常用的方法是通过DataTable对象的Column
属性中的Add方法。添加后的每一列都是一个DataColumn对象。
2.添加行。在DataTable对象中创建行DataTable对象的每一行都是一个DataRow对象,所以创建行时可以先利用
DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对
象添加到表中。
例子:
3.通过DateAdapter对象的Fill方法将SQLServer数据库中的表填充到DataTable对象中。
下面实在网上找的例子:
4在DataTable实现类似sql语句的查询功能。在脱离数据库的DataSet实现类似sql语句的查询。也就是(select...fromtablenamewhere...)这样的功能。将从DataSet中查询出来的数据以行的形式保存到arow中。
实现代码如下所示:
代码说明:
TableName:数据集ds中的表名。
ColumnsName:TableName表中的某一列名。
DataValue:和列名对应参数的值。
功能说明:
上面语句功能相当于sql语句中的查询语句:Select*FromTableNamewhereColumnsName=DataValue
5.DataTable中数据记录的统计。
我们可以根据DataTable中的数据进行一些数据处理,比如求某列的和或者平均数。
6.datatable复制表结构:我们可以使用.clone()方法;
7.把datatable中的所有信息复制到一个新的datatable,包括结构和数据:
8.复制datatable中的某一行:我们可以使用.ImportRow()方法;
9.我们做项目的时候经常需要合并两个DataTable,就可以使用DataTable.Merge这个方法。
这些都是DataTable的一些常用方法,都是前人总结出来的,我们可以灵活应用,比如做机费收费系统时使用,我
们需要按时间段查询学生充值记录、按是否结账查询、按充值教师查询,这时候我们就可以使用DataTable类似sql语
句的查询功能,先把所有的充值记录查出来放到DataTable中,然后对DataTable的数据进行操作,这样就可以减少D
层和B的方法。还有我们计算充值总额的时候,也直接直接使用DataTable.Compute("sum("列名")","TRUE")进行计算
下面是我做结账的时候对删选和求和的应用:
首先我们对DataTable有了简单的了解:
(1)概念:DataTable是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO.net库中的核心对象。——百度的解释
(2)常用方法:
AcceptChanges()提交自上次调用AcceptChanges()以来对该表进行的所有更改。
BeginInit()开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。
Clear()清除所有数据的DataTable。
Clone()克隆DataTable的结构,包括所有DataTable架构和约束。
EndInit()结束在窗体上使用或由另一个组件使用的DataTable的初始化。初始化发生在运行时。
ImportRow(DataRowrow)将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。
Merge(DataTabletable)将指定的DataTable与当前的DataTable合并。
NewRow()创建与该表具有相同架构的新DataRow。
从概念中我们知道DataTable是一个临时而且是虚拟的表,只要是表我们就可以对它进行常见的增删改查的操作,
这样就可以减少我们与数据库的交互次数。
1.添加列。在DataTable对象中添加列在DataTable对象中添加列的最常用的方法是通过DataTable对象的Column
属性中的Add方法。添加后的每一列都是一个DataColumn对象。
2.添加行。在DataTable对象中创建行DataTable对象的每一行都是一个DataRow对象,所以创建行时可以先利用
DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对
象添加到表中。
例子:
//创建一个Customers数据表 DataTableCustomersTable=newDataTable("Customers"); //创建一个新的数据行 DataRowarow=CustomersTable.NewRow(); //设置行的值 arow[ColumnName]=DataValue; //把数据行添加创建的Customers数据表中 CustomersTable.Rows.Add(arow);
3.通过DateAdapter对象的Fill方法将SQLServer数据库中的表填充到DataTable对象中。
下面实在网上找的例子:
//使用DataAdapter的Fill方法向Customers表中填充数据
stringconnectionString=
"DataSource=local;InitialCatalog=Northwind;IntegratedSecurity=True;UserID=sa;Password=";
stringcommandString="Select*fromCustomers";
SqlDataAdapterdataAdapter=newSqlDataAdapter(commandString,connectionString);
DataSetcustomers=newDataSet();
dataAdapter.Fill(customers,"Customers");
4在DataTable实现类似sql语句的查询功能。在脱离数据库的DataSet实现类似sql语句的查询。也就是(select...fromtablenamewhere...)这样的功能。将从DataSet中查询出来的数据以行的形式保存到arow中。
实现代码如下所示:
DataSetds=newDataSet();
DataRow[]arow=ds.Tables[TableName].Select(""+ColumnsName+"='"+DataValue+"'");
代码说明:
TableName:数据集ds中的表名。
ColumnsName:TableName表中的某一列名。
DataValue:和列名对应参数的值。
功能说明:
上面语句功能相当于sql语句中的查询语句:Select*FromTableNamewhereColumnsName=DataValue
5.DataTable中数据记录的统计。
我们可以根据DataTable中的数据进行一些数据处理,比如求某列的和或者平均数。
6.datatable复制表结构:我们可以使用.clone()方法;
DataTableoldDT=GetDataTable();
DataTablenewDT=oldDT.Clone();
7.把datatable中的所有信息复制到一个新的datatable,包括结构和数据:
DataTableoldDT=GetDataTable();
DataTablenewDT=oldDT.Copy();
8.复制datatable中的某一行:我们可以使用.ImportRow()方法;
DataTableoldDT=GetDataTable();
DataTablenewDT=newDataTable();
newDT.ImportRow(oldDT.Rows[1]);//把原来datatable中的第二行数据复制到新的datatable中。
9.我们做项目的时候经常需要合并两个DataTable,就可以使用DataTable.Merge这个方法。
这些都是DataTable的一些常用方法,都是前人总结出来的,我们可以灵活应用,比如做机费收费系统时使用,我
们需要按时间段查询学生充值记录、按是否结账查询、按充值教师查询,这时候我们就可以使用DataTable类似sql语
句的查询功能,先把所有的充值记录查出来放到DataTable中,然后对DataTable的数据进行操作,这样就可以减少D
层和B的方法。还有我们计算充值总额的时候,也直接直接使用DataTable.Compute("sum("列名")","TRUE")进行计算
下面是我做结账的时候对删选和求和的应用:
''根据用户ID和未结账查询退卡信息
'enReback.rebackOperator=cmbUserID.Text
enReback.RebackisCheckOut="否"
DimbtRebackAsDataTable
DimbtReback1AsDataTable
btReback=CardB.ReBackCardCheck(enReback)
'求总的退卡数
txtRemoveCardNum.Text=btReback.Rows.Count
'求出退还金额
txtRemoveMoney.Text=btReback.Compute("sum(退还金额)","TRUE")
'筛选出该教师的购卡数
view.Table=btReback
view.RowFilter="教师="&enReback.rebackOperator
btReback1=view.ToTable()
dgvRemoveCard.DataSource=btReback1
相关文章推荐
- DataTable的一些使用技巧
- Eclipse 的一些使用技巧
- 一些Xcode 5的使用提示和技巧
- 使用Visual Studio Code的一些技巧(Mac)
- Scrapy使用的一些技巧
- (柯昌合)Service使用技巧,一些不为人知的功能 [移动平台 Android](柯昌合)
- ubuntu一些快捷键和使用技巧
- 来自 Serenity 的 Java 8 的一些使用技巧
- SourceInsight一些使用技巧
- Jsoup解析html的一些使用技巧
- Hibernate的一些使用技巧
- DataTable使用技巧
- 2.Vim编辑器 - .vimrc基本配置项 & 一些有效的使用技巧
- sql*plus使用的一些技巧
- 一些VS2013的使用技巧
- 我的excel的一些使用技巧的学习(杂乱而无章)
- source insight的自动缩进 以及网上的一些使用技巧(转)
- iOS-UI基础-Xcode的一些使用技巧
- Mac上的软件的一些对开发者有用的使用技巧(持续更新)
- VS 2010的一些使用技巧