欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【ASP.NET 2.0中DataTable小兵变大将】,下面是详细的分享!
ASP.NET 2.0中DataTable小兵变大将
作者:蝈蝈俊出处:博客堂
我们先看一段WEBService的代码。
[WebMethod]
publicDataTableGetInfo()
...{
OleDbConnectionnwindConn=newOleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;"+
"DataSource=D:\\Northwind\\northwind.mdb;");
OleDbCommandselectCMD=
newOleDbCommand("SELECTCustomerID,CompanyNameFROMCustomers"
,nwindConn);
selectCMD.CommandTimeout=30;
OleDbDataAdaptercustDA=newOleDbDataAdapter();
custDA.SelectCommand=selectCMD;
DataSetcustDS=newDataSet();
custDA.Fill(custDS,"Customers");
returncustDS.Tables[0];
}
在.net1.1中,这是典型的一个错误,在.net1.1、1.0中,WEBService的返回或者输入参数不能是DataTable,这是一个众人皆知的知识点。原因就是DataTable不象DataSet那样支持序列化。在.net1.1中,我们解决这个问题的方法就是使用DataSet。但是使用DataSet的时候,经常会有一种杀鸡用牛刀的感觉。
附:.net1.1中使用DataTable作为WEBService返回值会报以下异常:
类型System.ComponentModel.ISite的成员System.ComponentModel.MarshalByValueComponent.Site是接口,因此无法将其序列化。
在.net2.0中,以上同样的代码,则没有任何问题了。原因是2.0中DataTable实现了序列化、反序列。
在VS2005Beta2的文档中,我们可以看到2.0中DataTable实现了以下接口:
ExplicitInterfaceImplementations
System.ComponentModel.IListSource.get_ContainsListCollection
System.ComponentModel.IListSource.GetList
System.Xml.Serialization.IXmlSerializable.GetSchema
System.Xml.Serialization.IXmlSerializable.ReadXml
System.Xml.Serialization.IXmlSerializable.WriteXml
而在1.1中,DataTable只实现了一个接口:
ExplicitInterfaceImplementations
System.ComponentModel.IListSource.ContainsListCollection
把DataSet中的一些功能移到DataTable中,2.0中还有Merge方法,即合并数个数据集。
DataTable的代码合并参看下面代码。
privatestaticvoidDemonstrateMergeTable()
...{
DataTabletable1=newDataTable("Items");
DataColumncolumn1=newDataColumn("id",typeof(System.Int32));
DataColumncolumn2=newDataColumn("item",typeof(System.Int32));
table1.Columns.Add(column1);
table1.Columns.Add(column2);
table1.PrimaryKey=newDataColumn[]...{column1};
table1.RowChanged+=newSystem.Data.DataRowChangeEventHandler(Row_Changed);
DataRowrow;
for(inti=0;i<=3;i++)
...{
row=table1.NewRow();
row["id"]=i;
row["item"]=i;
table1.Rows.Add(row);
}
//Acceptchanges.
table1.AcceptChanges();
DataTabletable2=table1.Clone();
row=table2.NewRow();
row["id"]=14;
row["item"]=774;
table2.Rows.Add(row);
row=table2.NewRow();
row["id"]=12;
row["item"]=555;
table2.Rows.Add(row);
row=table2.NewRow();
row["id"]=13;
row["item"]=665;
table2.Rows.Add(row);
//Mergetable2intothetable1.
table1.Merge(table2);
}
综合上述,.net2.0中DataTable从后台的默默无问的小兵变成独当一面的大将了。
以上所分享的是关于ASP.NET 2.0中DataTable小兵变大将,下面是编辑为你推荐的有价值的用户互动:
相关问题:asp.net datatable.rows[0][3];指的是数据集表的哪...
答:row是行的意思!Column是列的意思!datatable.rows[0][3];他的意思其实是datatable.rows[0]Column[3]的意思,也就是第一行,第四列的值。不过他省略写Column。如图 你可以把sql语句放到数据库执行,然后数数第一行第四列的值。然后再页面上输出... >>详细
相关问题:asp.net 如何判断DataTable.Rows 有多少列
答:DataTable.Columns.Count 获取datatable的列数 DataTable.Rows.Count 获取datatable的行数 >>详细
相关问题:asp.net关于DataTable的Select()方法?
答:dt.Select("id='"+id+"'");就可以 了 select(“直接放操作条件”) >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
